VBA Excel 2016
如果执行某些代码后该范围的列数较少,我将尝试动态调整该范围的大小。引用了 MS 文件和各种在线示例,但没有成功。 https://msdn.microsoft.com/en-us/library/office/ff193274.aspx
只有执行“testRange.Resize Range("A1:G1")”之类的操作,我才能实现正确的调整大小。但是我正在寻找类似以下内容的内容:
Sub Test_Range()
Dim Test As Worksheet
Set Test = Worksheets("test")
Dim testTable As Range
Set testTable = Test.Range("testTable[]")
Dim testTableWidth, testNumbersWidth As Integer
Set testTableWidth = testTable.Columns.Count
'Some code
'testNumbersWith is defined here
If testNumbersWidth < testTableWidth Then
testTable.Resize(, testNumbersWidth)
End If
End Sub
最佳答案
如果“命名范围”是“普通”命名范围或“表”(ListObject) 范围,则调整“命名范围”大小的方法是不同的。您的标题指的是第一种情况,但从您的代码看来您正在使用表格。
对于命名范围的情况,您可以像这样更改范围(即更改列数):
With ThisWorkbook.Names.Item("testTable")
.RefersTo = .RefersToRange.Resize(, newColumnsCount)
End With
对于表 (ListObject
) 的情况,这似乎是您的情况,您可以像这样更改列数:
Dim testTable As ListObject ' <-- Declare as ListObject
Set testTable = Test.ListObjects("testTable")
' Or Set testTable = Test.Range("testTable")
'Some code
' ....
testTable.Resize testTable.Range.Resize(, newColumnsCount) ' <-- resize number of cols
关于vba - 调整命名范围 VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43132952/