【问题标题】:Inserting multiple rows into an Excel Sheet with Vb.Net Com Add-In使用 Vb.Net Com 插件将多行插入 Excel 工作表
【发布时间】:2013-03-22 22:57:03
【问题描述】:

确定 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) 下一个 和 ContractSheet.Rows(InsertRow).Select() 对于 n = 1 到 16 ContractSheet.Selection.Insert() 下一个

我可以继续,但我认为这不会有帮助(因为我一直在一个问题上尝试了一个多小时,然后才在这里提问)。根据情况,我会收到以下错误之一:

HResult: 0x800A03EC;或

HResult 0x80020005;或

无法从工作表中筛选对象。

任何帮助将不胜感激。

【问题讨论】:

    标签: vb.net excel-2010 excel-addins


    【解决方案1】:

    最好是avoid Select statements,除非你必须和你不必在这里。所以,只是为了重新奠定基础,在 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
    

    【讨论】:

    • 非常感谢!我四处搜索并在 MSDN 上阅读 Rows,但不知何故从未见过 Resize。我不知道我怎么错过了那个。我已经从自己的反复试验中弄清楚以避免选择,我只是不知道在这种情况下这是可能的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多