excel - 表中的 VBA 多列引用
问题描述
我正在尝试在 VBA 中设置一个表,但是,我只想将范围设置为表中的特定列。我似乎不知道该怎么做。我搜索的所有内容似乎都返回了 excel 表引用,而且它似乎不是 VBA 的正确语法。这就是我所拥有的,但我得到一个运行时错误'9':下标超出范围。
Set Contact = Worksheets("Tables").ListObjects("Table1[[Column2]:[Column8]]")
编辑:我不认为我的问题很清楚。我正在尝试引用表中的某个范围,因为我正在使用 vlookup 来查找我正在寻找的数据。我正在引用第二列中的信息并获取第 8 列中的信息以设置为变量。所以我试图将 listobject 设置为更大的表格中的表格。
解决方案
你ListObjects("TableName")
用来引用整个表。然后ListColumns("ColumnHeading")
引用表中的特定列,其中“ColumnHeading”是表中的实际标题名称(或ListColumns(#)
其中#
列的索引号)。然后DataBodyRange
引用列数据的范围。
而不是使用查找行号和 a来获得结果VLookup
会更好。Match
Range.Cells
像这样的东西
Sub Demo()
Dim lo As ListObject
Dim SearchRange As Range
Dim LookupRange As Range
Dim SearchTerm As Variant
Dim LookupItem As Variant
Dim idx As Variant
Set lo = Worksheets("Tables").ListObjects("Table1")
Set SearchRange = lo.ListColumns("Column2").DataBodyRange
Set LookupRange = lo.ListColumns("Column8").DataBodyRange
SearchTerm = "YourSearchTerm"
idx = Application.Match(SearchTerm, SearchRange, 0)
If Not IsError(idx) Then
LookupItem = LookupRange.Cells(idx, 1)
' use the result as you wish
Debug.Print LookupItem
Else
' SearchTerm not found. What now?
End If
'For completeness, heres how to reference a range of columns
Dim VLookupRange As Range
Set VLookupRange = lo.Parent.Range(lo.ListColumns("Column2").DataBodyRange, lo.ListColumns("Column8").DataBodyRange)
Debug.Print VLookupRange.Address
End Sub
推荐阅读
- mysql - COLLATION 'utf8mb4_unicode_ci' 对 CHARACTER SET 'utf8' 无效 - DB::connection
- kubernetes - Kubeflow kale 连接 Rok 模块失败
- scilab - Scilab 中的 Gauss Seidel 收敛
- kotlin - 新实体的多个条件插入会在 R2DBC 中产生重复条目错误
- javascript - 如何在JS中随机单独播放音频文件
- javascript - 在chartJs中创建堆叠水平条形图的问题
- kotlin - maven-将缺少的工件发布到存储库
- abbyy - Abbyy Flexicapture 中的发票日期提取
- java - 从 mongodb 集合中的数组中获取值
- r - 使用向量作为 grep 模式