[英]Inserting multiple rows into an Excel Sheet with Vb.Net Com Add-In
在確定Excel工作表InsertRow的行索引之后,我想使用VB.net在它之后插入16行。 我正在構建一個COM加載項,如果這有任何改變。 在VBA中,我可以通過以下方式進行操作:
...
Dim InsertRow as String
...
Dim ContractForm As Worksheet
Set ContractForm = Sheets("Lab Contracts")
ContractForm.Select
ContractForm.Rows(InsertRow & ":" & InsertRow).Select
Range(Selection, Selection.Offset(8, 0)).EntireRow.Insert
我似乎找不到在VB.net中執行此操作的方法。 我已經嘗試過:[對於(InsertRow“:” InsertRow]的所有實例,我還嘗試了(“ 47:47”)和(InsertRow),以防語法不正確(反之亦然)。
...
ContractSheet.Rows(InsertRow ":" InsertRow).Select()
ContractSheet.Rows.Insert()
...
和ContractSheet.Rows(“ 47:47”)。Select()ContractSheet.Range(“ 47:47”)。EntireRow.Insert()和ContractSheet.Rows(InsertRow).Select()對於n = 1到16的ContractSheet。 Range(InsertRow&“:”&InsertRow).rows.insert(xlDown)Next和ContractSheet.Rows(InsertRow).Select()對於n = 1到16 ContractSheet.Selection.Insert()下一頁
而且我可以繼續,但是我認為這不會有所幫助(因為在提出問題之前,我一直在一個問題上嘗試一個多小時)。 根據具體情況,會出現以下錯誤之一:
結果:0x800A03EC; 要么
HResult 0x80020005; 要么
無法將對象篩選出表格。
任何幫助將不勝感激。
最好避免使用Select語句,除非您必須這樣做,也不必這樣做。 因此,僅需重新奠定基礎,就可以在VBA中執行以下操作:
Sub test()
Dim InsertRow As Long
Dim ContractForm As Worksheet
InsertRow = "5"
Set ContractForm = Sheets("Lab Contracts")
ContractForm.Rows(InsertRow).Resize(8).Insert xlShiftDown
End Sub
在VB.Net中幾乎是相同的。 (而且我猜VB或VBA都不需要xlShiftDown參數):
Imports Microsoft.Office.Interop
Sub test()
Dim ContractForm As Excel.Worksheet
Dim InsertRow As Int32
ContractForm = Application.ActiveWorkbook.Worksheets("Lab Contracts")
InsertRow = 5
ContractForm.Rows(InsertRow).Resize(8).insert() '(Excel.XlInsertShiftDirection.xlShiftDown)
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.