我有一个命名范围,我需要根据命名范围中有多少值来调整其大小。例如,如果有十个项目,范围应该是 $A$1:$I11,但我需要它缩小和扩展。这是我到目前为止所拥有的:
Sub Generate()
Dim wsFail as Worksheet
Dim NextRow As Long, TotalRows As Long
Set wsFail = Sheets("Failure Report")
wsFail.Activate
NextRow = Sheets("Failure Report").Range("A" & Rows.Count).End(xlUp).Row
TotalRows = Range("FailReportTable").Rows.Count
Sheets("Failure Report").Range("A" & TotalRows).Resize(TotalRows, 9).Value & _
= Range("FailReportTable").Columns("A:I").Value
End Sub
更新的代码(仍然不起作用)
With wsFail
.Activate
NextRow = .Cells(.Rows.Count, .Range("FailReportTable").Cells(1, 1).Column).End(xlUp).Row
FirstCell = .Range("FailReportTable").Cells(1, 1).Address(False, False)
LastCol = Split(.Range("FailReportTable").Cells(1, Range("FailReportTable").Columns.Count).Address(True, False), "$")(0)
NewRange = FirstCell & ":" & LastCol & NextRow
.ListObjects("FailReportTable").Resize Range("NewRange")
End With
最佳答案
调整命名范围大小的最终版本(带或不带标题)
- 将
FailReportTable
更改为您的 NamedRange 的名称 - 将
Failure Report
更改为您的 NamedRange 工作表的名称
代码:
Sub test_Gerasimos_Zap()
Dim wsFail As Worksheet, _
FirstCell As String, _
LastCol As String, _
NextRow As Long, _
NewRange As String
Set wsFail = Sheets("Failure Report")
With wsFail
.Activate
NextRow = .Cells(.Range("FailReportTable").Cells(1, 1).Row, .Range("FailReportTable").Cells(1, 1).Column).End(xlDown).Row
FirstCell = .Range("FailReportTable").Cells(1, 1).Offset(-1, 0).Address(False, False)
LastCol = Split(.Range("FailReportTable").Cells(1, .Range("FailReportTable").Columns.Count).Address(True, False), "$")(0)
NewRange = FirstCell & ":" & LastCol & NextRow
.ListObjects("FailReportTable").Resize Range(NewRange)
End With
End Sub
关于vba - 通过 VBA 调整 Excel 中命名范围的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33504479/