Excel 如何计算电子表格上两个大小不同的文本框?

Excel 如何计算电子表格上两个大小不同的文本框?,excel,vba,Excel,Vba,我有一个电子表格,上面有许多分别命名和编号的文本框。有两种文本框,大的和小的。我把所有的大电梯命名为“电梯1”到12。我把小的命名为“垂直1”到20。我还将复选框链接到每个文本框,使相应的文本框在未选中时消失。我试图为每种类型的文本框设置一个计数器,用于计算电子表格上可见的文本框数量。下面的代码给出了一个错误:“运行时错误‘1004’应用程序定义的错误或对象定义的错误”。我将计数器出现的单元格命名为“NumberOfRisers”,我的工作表命名为“LobbyCars” 这里有一个函数,它将根据

我有一个电子表格,上面有许多分别命名和编号的文本框。有两种文本框,大的和小的。我把所有的大电梯命名为“电梯1”到12。我把小的命名为“垂直1”到20。我还将复选框链接到每个文本框,使相应的文本框在未选中时消失。我试图为每种类型的文本框设置一个计数器,用于计算电子表格上可见的文本框数量。下面的代码给出了一个错误:“运行时错误‘1004’应用程序定义的错误或对象定义的错误”。我将计数器出现的单元格命名为“NumberOfRisers”,我的工作表命名为“LobbyCars”


这里有一个
函数
,它将根据工作表上的文本框的名称和可见性来计算它们的数量

Private Function CountTextBoxes(txtBoxName As String, ws As Worksheet) As Integer
    Dim i As Integer

    If ws.Shapes.Count > 0 Then
        For i = 1 To ws.Shapes.Count
            With ws.Shapes(i)
                If .Type = msoTextBox And InStr(1, .Name, txtBoxName) And .Visible Then CountTextBoxes = CountTextBoxes + 1
            End With
        Next i
    End If

End Function

Sub CountMyTextBoxes()
    Debug.Print CountTextBoxes("Elevator", Sheets("Lobby Cars"))
    Debug.Print CountTextBoxes("Riser", Sheets("Lobby Cars"))
End Sub

这里有一个
函数
,它将根据工作表上的文本框的名称和可见性来计算它们的数量

Private Function CountTextBoxes(txtBoxName As String, ws As Worksheet) As Integer
    Dim i As Integer

    If ws.Shapes.Count > 0 Then
        For i = 1 To ws.Shapes.Count
            With ws.Shapes(i)
                If .Type = msoTextBox And InStr(1, .Name, txtBoxName) And .Visible Then CountTextBoxes = CountTextBoxes + 1
            End With
        Next i
    End If

End Function

Sub CountMyTextBoxes()
    Debug.Print CountTextBoxes("Elevator", Sheets("Lobby Cars"))
    Debug.Print CountTextBoxes("Riser", Sheets("Lobby Cars"))
End Sub

每张纸上都有文本框吗?如果没有,请删除工作表循环,仅对“游说车”进行计数。还可以重命名sub,这样命名范围就不会有歧义(它们当前都是命名的NumberOfRiser,这可能会导致问题)。另外,让你的计数器变量查看特定的工作表,而不是ActiveSheet。也许它就在这里,但是你的引号看起来很奇怪。试试这个
工作表(“游说车”)。范围(“NumberOfRisers”)=计数器
每张工作表上都有文本框吗?如果没有,请删除工作表循环,仅对“游说车”进行计数。还可以重命名sub,这样命名范围就不会有歧义(它们当前都是命名的NumberOfRiser,这可能会导致问题)。另外,让你的计数器变量查看特定的工作表,而不是ActiveSheet。也许它就在这里,但是你的引号看起来很奇怪。试试这个
工作表(“游说车”)。范围(“NumberOfRiser”)=计数器