Excel 在Objectname中为WITH语句使用变量

Excel 在Objectname中为WITH语句使用变量,excel,vba,Excel,Vba,我有一个excel宏,它从另一个工作表中的特定列读取内容。我想在WITH语句的工作表名称中使用一个变量,但在运行时会不断收到错误消息error,For Each行中需要对象 我已经搜索过如何在对象名中使用变量,并尝试过,但没有效果 此代码有效 With Blad2 strData = Range(id & "1") & vbLf & vbLf For Each c In .Range(id & "2:" & id & "10")

我有一个excel宏,它从另一个工作表中的特定列读取内容。我想在WITH语句的工作表名称中使用一个变量,但在运行时会不断收到错误消息error,For Each行中需要对象

我已经搜索过如何在对象名中使用变量,并尝试过,但没有效果

此代码有效

With Blad2
strData = Range(id & "1") & vbLf & vbLf
    For Each c In .Range(id & "2:" & id & "10")
        If c.Value <> "" Then
            strData = strData & " - " & c.Value & vbLf
        End If
    Next c
End With
此代码失败。我确信变量bld有一个数值,用MsgBox测试过

With ("Blad" & bld)
strData = Range(id & "1") & vbLf & vbLf
    For Each c In .Range(id & "2:" & id & "10")
        If c.Value <> "" Then
            strData = strData & " - " & c.Value & vbLf
        End If
    Next c
End With

有什么线索可以帮助我实现这一点吗?

工作表可以通过4种方式参考:

及其索引; 标签上有其名称; 其代码名,默认情况下与选项卡名称相同,除非后者发生更改; 带有一个变量; 不久前,我在这里写下了这个答案-

使用Blad2编写时,Blad2是工作表的代码名。例如,这里的那个:

因此,它已经是一个变量,Excel可以识别它。另一方面,With Blad&bld是一个字符串,而不是一个工作表变量


要使其正常工作,请使用工作表的工作表名称与工作表blad&bld一起使用。

工作表可通过4种方式引用:

及其索引; 标签上有其名称; 其代码名,默认情况下与选项卡名称相同,除非后者发生更改; 带有一个变量; 不久前,我在这里写下了这个答案-

使用Blad2编写时,Blad2是工作表的代码名。例如,这里的那个:

因此,它已经是一个变量,Excel可以识别它。另一方面,With Blad&bld是一个字符串,而不是一个工作表变量


要使其正常工作,请使用工作表的工作表名称与工作表blad&bld一起使用。

您尝试的是使用变量作为工作表代码名称。你不能那样做。为了达到你想要的,试试这个

Dim bld As Long: bld = 2
Dim shtCode As String

shtCode = "Blad" & bld

With Sheets(ThisWorkbook.VBProject.VBComponents(shtCode).Properties("Name").Value)
    Debug.Print .Name
End With

您尝试的是使用变量变量作为SheetCode名称。你不能那样做。为了达到你想要的,试试这个

Dim bld As Long: bld = 2
Dim shtCode As String

shtCode = "Blad" & bld

With Sheets(ThisWorkbook.VBProject.VBComponents(shtCode).Properties("Name").Value)
    Debug.Print .Name
End With


哪一行失败?Blad&bld是一个字符串,而不是一个对象。如前所述,For Each,line 3Hi@vincent G,这很清楚,那么我如何在excel的objectname'Blad2'表2中使用变量bld哪一行失败?Blad&bld是一个字符串,而不是一个对象。如前所述,For Each,line 3Hi@vincent G,这很清楚,那么如何使用Excel的objectname“Blad2”工作表2中的变量bld现在我在工作表Blad&bld的行上出现错误,下标超出了范围。您不能像这样对代码名使用变量。您可以使用工作表的名称:@SiddharthRout-我假设工作表的名称与代码名完全相同,因为Blad2是Dutch Excel的默认值。@JeroenSwets-bld的值是多少?根据您的屏幕截图,工作表的名称是Tabelle1:现在我在工作表Blad&bld的行中出现错误,下标超出了范围您不能像这样对代码名使用变量。您可以使用@SiddharthRout作为工作表的名称,我假设工作表的名称与代码名完全相同,因为Blad2是Dutch Excel的默认值。@JeroenSwets-bld的值是多少?根据您的屏幕截图,工作表的名称是Tabelle1:是它工作:文件|选项|信任中心|信任中心设置|宏设置|选中复选框信任访问VBA项目对象模型我不信任它:它工作:文件|选项|信任中心|信任中心设置|宏设置|选中复选框信任访问VBA项目对象模型我不信任它:D