Excel VBA 命名范围上的 CountA 方法
Excel VBA CountA method on named range
我已经为 20 个单元格建立了一个名称范围,这样我就可以输入从 1 到 20 不等的新项目列表。我想编写一个宏,以便它读取项目的数量并创建正确的选项卡数量,并以命名范围中列出的项目名称命名选项卡。除了无法使 countA 函数工作之外,我已经完成了所有这些工作。命名范围是 csCount。如果我在一个实例中将 For 循环更改为正确的数字(如果我输入 7,因为现在我有 7 个项目)循环和宏是正确的。我想使用 countA 使其更具动态性。非常感谢您的帮助。
Sub generateDepartments()
Dim tabs As Integer
Dim sName As String
Dim i As Integer
Dim j As Integer
Dim csCount As Variant
tabs = Application.CountA(csCount)
j = 5
i = tabs
For i = 2 To Application.CountA(csCount)
Worksheets("Input").Activate
sName = Cells(j, 3).Value
Worksheets.Add(after:=Worksheets(i)).Name = sName
j = j + 1
Next
End Sub
首先您需要创建一个变量来访问您的命名范围:Set csCount = ActiveWorkbook.Names("csCount").RefersToRange
或 Set csCount = ActiveSheet.Range("csCount")
然后使用Application.WorksheetFunction.CountA(csCount)
此外,最好定义为范围而不是变体 Dim csCount As Range
我已经为 20 个单元格建立了一个名称范围,这样我就可以输入从 1 到 20 不等的新项目列表。我想编写一个宏,以便它读取项目的数量并创建正确的选项卡数量,并以命名范围中列出的项目名称命名选项卡。除了无法使 countA 函数工作之外,我已经完成了所有这些工作。命名范围是 csCount。如果我在一个实例中将 For 循环更改为正确的数字(如果我输入 7,因为现在我有 7 个项目)循环和宏是正确的。我想使用 countA 使其更具动态性。非常感谢您的帮助。
Sub generateDepartments()
Dim tabs As Integer
Dim sName As String
Dim i As Integer
Dim j As Integer
Dim csCount As Variant
tabs = Application.CountA(csCount)
j = 5
i = tabs
For i = 2 To Application.CountA(csCount)
Worksheets("Input").Activate
sName = Cells(j, 3).Value
Worksheets.Add(after:=Worksheets(i)).Name = sName
j = j + 1
Next
End Sub
首先您需要创建一个变量来访问您的命名范围:Set csCount = ActiveWorkbook.Names("csCount").RefersToRange
或 Set csCount = ActiveSheet.Range("csCount")
然后使用Application.WorksheetFunction.CountA(csCount)
此外,最好定义为范围而不是变体 Dim csCount As Range