Vba Excel Tabellenblatt nach Zellennamen durchsuchen
Hallo,
ich habe ein Problem bei meinem VBA-Script.
Und zwar möchte ich ein bestimmtes Tabellenblatt durchsuchen ob ein bestimmter Zellenname vorhanden ist.
Leider funktioniert der Code nicht und gibt immer einen Fehler aus.
Das Problem liegt irgendwo in Zeile 13.
Auch die explizierte Definition des Tabellenblattes funktioniert nicht
Wäre für einen Tipp dankbar
Gruß Feder
ich habe ein Problem bei meinem VBA-Script.
Und zwar möchte ich ein bestimmtes Tabellenblatt durchsuchen ob ein bestimmter Zellenname vorhanden ist.
Sub Zellenname_suchen()
Dim Tabelle As String 'Tabellenblatt Name
Dim STG(0 To 100, 0 To 2) As String 'Array
Dim iSTG, jSTG As Integer 'Zähler
'Array einlesen
For iSTG = 3 To 100 'Startadresse Zeile 4...54 --> Zeile 10 = Adresse 11
For jSTG = 0 To 1 'Startadresse Spalte A..C --> Spalte A = Adresse 0
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
Leider funktioniert der Code nicht und gibt immer einen Fehler aus.
Das Problem liegt irgendwo in Zeile 13.
Laufzeitfehler '1004':
Die Methode 'Range' für das Objekt '_Global' ist fehlgeschlagen
Auch die explizierte Definition des Tabellenblattes funktioniert nicht
If Sheets("Tabelle").Range(STG(iSTG, 1) & "_SWnummer").Value = STG(iSTG, 1) & "_SWnummer" Then
Laufzeitfehler '1004':
Anwendungs- oder objektdefinierter Fehler
Wäre für einen Tipp dankbar
Gruß Feder
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 246614
Url: https://administrator.de/contentid/246614
Ausgedruckt am: 26.11.2024 um 10:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo Feder,
suchst du nach Zellnamen also dem Alias den man für einen Zellbereich auf dem Tab Formeln > Namensmanager festlegen kann, oder nur nach dem Inhalt bzw. Wert einer Zelle ?
Du gibst nämlich in Zeile 13 als Range keine Zelladressierung an sondern einen String-Namen für einen Bereich, und wenn dieser nicht existiert läuft das Script natürlich in eine Exception.
Aber erkläre doch mal was du wo suchst, denn dein Ansatz ist viel zu kompliziert gedacht für diese Aufgabe.
Mit der Range.Find Methode ist das ganze wesentlich schneller und effektiver erledigt.
Grüße Uwe
suchst du nach Zellnamen also dem Alias den man für einen Zellbereich auf dem Tab Formeln > Namensmanager festlegen kann, oder nur nach dem Inhalt bzw. Wert einer Zelle ?
Du gibst nämlich in Zeile 13 als Range keine Zelladressierung an sondern einen String-Namen für einen Bereich, und wenn dieser nicht existiert läuft das Script natürlich in eine Exception.
Aber erkläre doch mal was du wo suchst, denn dein Ansatz ist viel zu kompliziert gedacht für diese Aufgabe.
Mit der Range.Find Methode ist das ganze wesentlich schneller und effektiver erledigt.
Grüße Uwe
Sub FindRangeName()
Dim ws As Worksheet, cell As Range, found As Boolean, objDic As Object, n As Name
'Bestimmtes Worksheet verwenden
Set ws = Worksheets("Tabelle")
'Dictionary Objekt erstellen
Set objDic = CreateObject("Scripting.Dictionary")
'Alle Bereichsnamen in das Dictionary laden
For Each n In ActiveWorkbook.Names
objDic.Add n.Name, ""
Next
'Suche im belegten Bereich des Worksheets nach einem Bereichsnamen der sich aus dem Zellwert und dem String "_SWNummer" zusammensetzt
For Each cell In ws.UsedRange
' wenn der Bereichsname existiert verlasse die Schleife
If objDic.Exists(cell.Value & "_SWNummer") Then
found = True
Exit For
End If
Next
If found Then
MsgBox "Gefunden" 'Gefunden
Else
MsgBox "Nicht gefunden" 'nicht gefunden
End If
Set objDic = Nothing
End Sub