vba excel检查单元名

vba excel检查单元名,vba,excel,cell,Vba,Excel,Cell,我的VBA脚本有点问题。 如果存在单元格名称,我想在特定工作表中搜索 Sub Zellenname_suchen() Dim Tabelle As String Dim STG(0 To 100, 0 To 2) As String 'Array Dim iSTG, jSTG As Integer 'read Array For iSTG = 3 To 100 For jSTG = 0 To 1

我的VBA脚本有点问题。 如果存在单元格名称,我想在特定工作表中搜索

Sub Zellenname_suchen()

Dim Tabelle As String 
Dim STG(0 To 100, 0 To 2) As String 'Array
Dim iSTG, jSTG As Integer

'read Array
  For iSTG = 3 To 100                       
    For jSTG = 0 To 1                       
        STG(iSTG, jSTG) = Sheets("Tabelle").Cells(iSTG + 1, jSTG + 1).Value
    Next jSTG

    If Range(STG(iSTG, 1) & "_SWnummer").Value = STG(iSTG, 1) & "_SWnummer" Then
        '
        ' Code
        '
    End If
  Next iSTG

End Sub
但是这个代码不起作用。故障在第13行

Runtimeerror'1004':
Die Methode 'Range' für das Objekt '_Global' ist fehlgeschlagen
此外,工作表的明确定义也不起作用

If Sheets("Tabelle").Range(STG(iSTG, 1) & "_SWnummer").Value = STG(iSTG, 1) & "_SWnummer" Then

Runtimeerror '1004':
Anwendungs- oder objektdefinierter Fehler
thx求救
Feder错误1004确实意味着找不到指定的(命名的)范围。试着调试这个,通过单步遍历选项

首先,确保错误来自该行,因此隔离错误并仅使用以下内容创建新的子组件:

Sub jzz()

Debug.Print Range("test_1").Value 'substitute 'test' with whatever name you have

End Sub
如果运行正常,并打印范围值,则开始构造字符串。因此,与我使用的“test_1”不同,我将执行以下操作:

Sub jzz()
Dim i As Long

i = 1
Debug.Print Range("test_" & i).Value

End Sub
如果此操作无法正常运行,则可以使用以下方法打印在将其输入范围之前构建的字符串:

Debug.Print "test_" & i
检查这是否是你对它的期望

然后从那里继续。调试就是将事情分解并修复每个单独的部分。然后再次构建完整的解决方案,一次一块砖。测试,测试,再测试。如果你学会了如何调试,你就学会了编码(更好)


我相信你会找到一些触发错误的东西,甚至可以解决它。如果遇到问题,请回来。

这行有错误吗<代码>如果范围(STG(iSTG,1).这是因为您不能使用数组作为范围对象的索引。您好David,使用数组变量的范围应该不是问题。当iam与静态名称一起使用时,我也会遇到问题,例如:
If Sheets(Tabelle)。范围(“swnumer”).Value=“swnumer”然后…你说你正在检查单元格的“名称”,但是没有一个单元格的属性。考虑添加更多的信息,或者确切地说明你想要做什么。如果在运行时在<代码> ActSeSeGeE<代码>上没有命名的范围(如果你没有将范围限定在工作表上),那行也可能失败。。为什么不创建一个现有名称的集合/数组/字典,然后根据该列表进行查询?似乎比您尝试执行的任何操作都更可靠。。。