gpt4 book ai didi

excel - 获取表格列 Excel VBA 的范围(或值)

转载 作者:行者123 更新时间:2023-12-04 10:38:45 54 4
gpt4 key购买 nike

我正在尝试使用 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。我也不想选择范围,只是获取该信息并将其用于其他目的。

最佳答案

您的代码已返回指定列的所有数据。您可以通过添加到您的 Sub(在 Set rng = ... 之后)来查看这一点,并在立即窗口中查看输出

Sub test()
Dim tbl as ListObject
Dim rng as Range
Set tbl = ActiveSheet.ListObjects("Table1")
Set rng = tbl.ListColumns(2).DataBodyRange

Debug.Print rng.Address
Dim cl As Range
For Each cl In rng
Debug.Print cl.Address, cl.Value
Next
End Sub

关于你的第二个问题,改

Set tbl = ActiveSheet.ListObjects("Table1")

Set tbl = ActiveWorkbook.Worksheets("NameOfTableSheet").ListObjects("Table1")

您可能还想指定特定的工作簿。

Set tbl = Workbooks("NameOfWorkbook").Worksheets("NameOfTableSheet").ListObjects("Table1")

关于excel - 获取表格列 Excel VBA 的范围(或值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60030410/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com