首页 > 解决方案 > 使用 vb.net 在 excel 中添加新列

问题描述

我希望有人能够为我提供一些帮助吗?我的 excel 工作表包含各种列,我希望做的只是在最后添加另一列。因此,如果我的工作表包含 20 列数据,我希望将标题添加到 U1 列,下次如果我的工作表有 22 列数据,我希望将标题添加到 V1,依此类推

现在我已经设法获得下一个列字母但是当我尝试将文本传递到标题行时,我收到一个错误,即对象引用未设置为下一行的对象实例

.Range(ColumnIndexToColumnLetter(lColumn + 1) & 1).Value = "TESTT"

非常感谢任何帮助,非常感谢

    Dim xls As New Excel.Application
    Dim xWorkbook As Excel.Workbook
    Dim xWorksheet As Excel.Worksheet
    Dim lColumn As Long = 0

    xWorkbook = xls.Workbooks.Open("D:\Test.xlsx") 'File Location
    xWorksheet = xWorkbook.Sheets(1)
    xls.Visible = True

    With xWorksheet
        If xls.WorksheetFunction.CountA(.Columns) <> 0 Then
            lColumn = .Columns.Find(What:="*", _
                          After:=.Range("A1"), _
                          LookAt:=Excel.XlLookAt.xlPart, _
                          LookIn:=Excel.XlFindLookIn.xlFormulas, _
                          SearchOrder:=Excel.XlSearchOrder.xlByColumns, _
                          SearchDirection:=Excel.XlSearchDirection.xlPrevious, _
                          MatchCase:=False).Column
        Else
            lColumn = 1
        End If
    End With

    With xWorksheet
              .Range(ColumnIndexToColumnLetter(lColumn + 1) & 1).Value = "TESTT"
    End With

Private Function ColumnIndexToColumnLetter(colIndex As Integer) As String
    Dim div As Integer = colIndex
    Dim colLetter As String = String.Empty
    Dim modnum As Integer = 0

    While div > 0
        modnum = (div - 1) Mod 26
        colLetter = Chr(65 + modnum) & colLetter
        div = CInt((div - modnum) \ 26)
    End While

    Return colLetter
End Function

标签: excelvb.netvb.net-2010

解决方案


如果您使用 option strict ,则必须使用 cint 进行转换,通过此更改,您的代码运行良好

With xWorksheet
  .Range(ColumnIndexToColumnLetter(CInt(lColumn + 1)) & 1).Value = "TESTT"
End With

推荐阅读