![](/img/trans.png)
[英]How to set a range in vba using specific contiguous columns of structured reference table in excel?
[英]Structured reference in VBA to a specific row and range of columns
我正在嘗試遍歷ListObject
並根據行是否可見,選擇該行的某些列以復制並粘貼到另一個工作表中。 我目前有以下代碼:
Set tbl = ActiveSheet.ListObjects("MasterBudget")
For r = 1 To tbl.ListRows.Count
If tbl.ListRows(r).Range.RowHeight <> 0 Then 'not hidden/filtered
tbl.ListColumns("Item description").DataBodyRange(r).Select
Range("[@[Item description]:[Unit 3]]").Select '<-- problem line
End If
Next r
它確實找到了正確的項目,但由於某種原因我無法弄清楚如何選擇那組特定的列(從項目描述到單元 3)。 我究竟做錯了什么?
任何建議高度贊賞。
@
符號只有在有問題的ListObject
內的單元格中輸入時才有意義。
從代碼中,你已經有了你想要的行和列,所以你想要的單元格是兩者的交集:
Dim tbl As ListObject
Dim ColumnsOfInterest As Range
Dim r As Long
Set tbl = ActiveSheet.ListObjects("MasterBudget")
Set ColumnsOfInterest = tbl.DataBodyRange.Worksheet.Range(tbl.ListColumns("Item description").Range, tbl.ListColumns("Unit 3").Range)
For r = 1 To tbl.ListRows.Count
If tbl.ListRows(r).Range.RowHeight <> 0 Then 'not hidden/filtered
Dim RangeToCopy As Range
Set RangeToCopy = Application.Intersect(tbl.ListRows(r).Range, ColumnsOfInterest)
RangeToCopy.Copy ...
End If
Next r
請注意,您不必select
任何內容。
這可能不是最優雅的,但很少處理結構化 ListObject 表引用。
Dim tbl As Object, r As Long
Set tbl = ActiveSheet.ListObjects("MasterBudget")
For r = 1 To tbl.ListRows.Count
If tbl.ListRows(r).Range.RowHeight <> 0 Then 'not hidden/filtered
tbl.ListColumns("Item description").DataBodyRange(r).Select
ActiveSheet.Range(tbl.ListColumns("Item description").DataBodyRange(r), _
tbl.ListColumns("Unit 3").DataBodyRange(r)).Select
End If
Next r
您也可以使用tbl.parent
代替ActiveSheet
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.