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").RefersToRangeSet csCount = ActiveSheet.Range("csCount")

然后使用Application.WorksheetFunction.CountA(csCount)

此外,最好定义为范围而不是变体 Dim csCount As Range