我正在尝试使用VBA代码获取Excel表格中第二列的单元格范围,并在用户表单初始化时自动更新此范围,以便每当有新条目添加到表格中时都能更新。起初我认为这很容易,但现在我完全迷失了方向,无法让我的代码正常运行。可能是我漏掉了什么。
我在论坛上搜索并找到了两种可能的解决方案,第一种是:
我在论坛上搜索并找到了两种可能的解决方案,第一种是:
Sub test()
Dim table As ListObject
Set table = ActiveSheet.ListObjects("Table1")
Debug.Print table.ListColumns(2).Range.Rows.Count
End Sub
这段代码有些可用。每次运行它都能成功识别包含所有新行的Table1
。问题是它会识别整个表格,而我只想得到单列的范围。无论我怎么做,变量table
始终获取整个表格的范围。
我找到了第二种方法,如下:
Sub test()
Dim tbl as ListObject
Dim rng as Range
Set tbl = ActiveSheet.ListObjects("Table1")
Set rng = tbl.ListColumns(2).DataBodyRange
End Sub
这段代码可以工作,但只适用于表格仅有单一数据行的情况。如果我的表格仅有单一数据行,变量rng
可以正确地识别表格和行。然而,该变量的值是单元格的值,例如“示例文本”,而不是单元格范围。如果我尝试添加更多行,则变量rng
仍为空。
我真的很希望得到任何关于此的指导。我还应该提到,即使在使用不同的工作表时,我想获得属于该表格的列的范围,例如C3:C5
。当添加更多数据以获取更新后的范围,例如C3:C80
。我既不希望选择范围,也要获取该信息并将其用于其他目的。
Set rng = ActiveSheet.Range("Table1[Green]")
。 - PeterT