首页 > 解决方案 > 如何在格式化表中找到上次使用的列?

问题描述

我正在尝试获取格式化表中最后使用的列并插入一个值。但它总是返回表内的最后一个(=空)列。看下图理解: 在此处输入图像描述

出于某种原因,文本“-seit-”被放置在第 16 列的“10.Besitzer”列中,而它应该被放入第 7 列的“1.Besitzer”中。

我的代码如下所示:

LastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1 '+1 to go to next empty row 

'here it adds values in empty row, starting from column 1(ID) until column 6(IT). 
'I left out this part of code.
 
LastCol = ws.Cells(LastRow, Columns.Count).End(xlToLeft).Column 'Search for last column
        
ws.Cells(LastRow, LastCol).Value = "- seit -" 'place text into last column

如果感觉它会导致问题,因为它是一个格式化的表格,但我不确定。我非常感谢任何帮助。

标签: excelvba

解决方案


请使用下一个功能:

Function LastUsedColInTable(tbl As ListObject, iRow As Long) As Long
 Dim C As Range

 With tbl.Range.rows(iRow)
    Set C = .Find(what:="*", After:=.cells(1), LookIn:=xlValues, _
             searchorder:=xlByColumns, SearchDirection:=xlPrevious)
    If Not C Is Nothing Then
        LastUsedColInTable = C.Column
    Else
        LastUsedColInTable = 1
    End If
 End With
End Function

可以这样测试:

Sub testLastColInTable()
 Dim tbl As ListObject
 Set tbl = ActiveSheet.ListObjects(1)
  Debug.Print LastUsedColInTable(tbl, 2)
End Sub

推荐阅读