Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Vba Excel Tabellenblatt nach Zellennamen durchsuchen

Mitglied: chef1568

chef1568 (Level 1) - Jetzt verbinden

16.08.2014, aktualisiert 17.08.2014, 4827 Aufrufe, 5 Kommentare

Hallo,

ich habe ein Problem bei meinem VBA-Script.
Und zwar möchte ich ein bestimmtes Tabellenblatt durchsuchen ob ein bestimmter Zellenname vorhanden ist.

01.
Sub Zellenname_suchen() 
02.
 
03.
Dim Tabelle As String 'Tabellenblatt Name 
04.
Dim STG(0 To 100, 0 To 2) As String 'Array 
05.
Dim iSTG, jSTG As Integer 'Zähler 
06.
 
07.
'Array einlesen 
08.
For iSTG = 3 To 100                        'Startadresse Zeile 4...54 --> Zeile 10 = Adresse 11 
09.
    For jSTG = 0 To 1                       'Startadresse Spalte A..C --> Spalte A = Adresse 0 
10.
        STG(iSTG, jSTG) = Sheets("Tabelle").Cells(iSTG + 1, jSTG + 1).Value 
11.
    Next jSTG 
12.
 
13.
    If Range(STG(iSTG, 1) & "_SWnummer").Value = STG(iSTG, 1) & "_SWnummer" Then 
14.
        '############## 
15.
        ' Code 
16.
        '############## 
17.
    End If 
18.
Next iSTG 
19.
 
20.
End Sub
Leider funktioniert der Code nicht und gibt immer einen Fehler aus.
Das Problem liegt irgendwo in Zeile 13.

01.
Laufzeitfehler '1004': 
02.
Die Methode 'Range' für das Objekt '_Global' ist fehlgeschlagen
Auch die explizierte Definition des Tabellenblattes funktioniert nicht
01.
    If Sheets("Tabelle").Range(STG(iSTG, 1) & "_SWnummer").Value = STG(iSTG, 1) & "_SWnummer" Then
01.
Laufzeitfehler '1004': 
02.
Anwendungs- oder objektdefinierter Fehler
Wäre für einen Tipp dankbar
Gruß Feder
Mitglied: colinardo
16.08.2014 um 10:59 Uhr
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
Bitte warten ..
Mitglied: chef1568
17.08.2014 um 17:36 Uhr
Ja genau, ich suche den Zellennamen - nicht den Inhalt der Zelle!
Und den suche ich in einem ausgewähltem Tabellenblatt (also in allen Spalten des Tabellenblattes XY.

Das Ergebnis soll dann wie folgt aussehen:
Zellenname in ausgewähltem Tabellenblatt vorhanden (egal wo) = TRUE
Zellenname in ausgewähltem Tabellenblatt nicht vorhanden = FALSE
Bitte warten ..
Mitglied: colinardo
LÖSUNG 17.08.2014, aktualisiert um 18:45 Uhr
01.
Sub FindRangeName() 
02.
    Dim ws As Worksheet, cell As Range, found As Boolean, objDic As Object, n As Name 
03.
    'Bestimmtes Worksheet verwenden 
04.
    Set ws = Worksheets("Tabelle") 
05.
    'Dictionary Objekt erstellen 
06.
    Set objDic = CreateObject("Scripting.Dictionary") 
07.
    'Alle Bereichsnamen in das Dictionary laden 
08.
    For Each n In ActiveWorkbook.Names 
09.
        objDic.Add n.Name, "" 
10.
    Next 
11.
    'Suche im belegten Bereich des Worksheets nach einem Bereichsnamen der sich aus dem Zellwert und dem String "_SWNummer" zusammensetzt 
12.
    For Each cell In ws.UsedRange 
13.
        ' wenn der Bereichsname existiert verlasse die Schleife 
14.
        If objDic.Exists(cell.Value & "_SWNummer") Then 
15.
            found = True 
16.
            Exit For 
17.
        End If 
18.
    Next 
19.
    If found Then 
20.
        MsgBox "Gefunden"           'Gefunden 
21.
    Else 
22.
        MsgBox "Nicht gefunden"        'nicht gefunden 
23.
    End If 
24.
    Set objDic = Nothing 
25.
End Sub
Bitte warten ..
Mitglied: chef1568
17.08.2014 um 18:52 Uhr
Hallo colinardo,

danke für deinen Lösungsvorschlag.

Ich habe derzeit eine andere Variante als Lösung gefunden

01.
  
02.
Sub Zellenname_suchen() 
03.
 
04.
Dim Tabelle As String 'Tabellenblatt Name 
05.
Dim STG(0 To 100, 0 To 2) As String 'Array 
06.
Dim iSTG, jSTG As Integer 'Zähler 
07.
Dim STGexist 'mit Range-Informationen 
08.
 
09.
'Array einlesen 
10.
For iSTG = 3 To 100                        'Startadresse Zeile 4...54 --> Zeile 10 = Adresse 11 
11.
    For jSTG = 0 To 1                       'Startadresse Spalte A..C --> Spalte A = Adresse 0 
12.
        STG(iSTG, jSTG) = Sheets("Tabelle").Cells(iSTG + 1, jSTG + 1).Value 
13.
    Next jSTG 
14.
 
15.
    On Error Resume Next 
16.
    STGexist = Names(STG(iSTG, 1) & "_SWnummer") 
17.
             
18.
    If Not STGexist = "" Then 
19.
        '############## 
20.
        ' Code 
21.
        '############## 
22.
    End If 
23.
Next iSTG 
24.
 
25.
End Sub
Trotzdem danke für deine Lösung - werde sie bei Gelegenheit auch mal testen und vielleicht auch so einbauen weil ich deine Lösung etwas eleganter finde
mfg feder
Bitte warten ..
Mitglied: colinardo
17.08.2014, aktualisiert um 18:54 Uhr
"Dirty" gehts natürlich auch

Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Unterordner durchsuchen Excel VBA
Frage von schwalbepilotMicrosoft Office1 Kommentar

Hi, ich habe mir ein Makro gebastelt, mit dem ich Daten aus mehreren Word Tabellen auslesen kann. Das Makro ...

Microsoft Office

VBA Excel Tabellenblätter als PDF speichern

gelöst Frage von Florian86Microsoft Office8 Kommentare

Hallo, gib es die Möglichkeit per VBA ein einzelnes Tabellenblatt als PDF zuspeichern. Derzeit speichere ich immer die komplette ...

VB for Applications

Excel 2010 VBA: Autofilter auf anderem Tabellenblatt

gelöst Frage von YotYotVB for Applications7 Kommentare

Moin! Gibt es eine Möglichkeit, z.B. in Tabelle1!B18 einen Autofilter für Tabelle2!A:A zu erstellen? Hintergrund: mit dem Autofilter finden ...

VB for Applications

Mit VBA prüfen, ob Tabellenblatt existiert

gelöst Frage von Anna2701VB for Applications9 Kommentare

Hallo zusammen, ich habe folgendes Problem: Ich prüfe in meinem Code, ob ein Tabellenblatt existiert und wenn es existiert ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 14 StundenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 14 StundenSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 1 TagDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 1 TagSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
Exchange Server
Exchange Postfach Einbindung Betriebs-rat -Arzt, Bewerbung .
gelöst Frage von YellowcakeExchange Server23 Kommentare

Hey ich habe da mal eine Denksport Aufgabe bekommen Genutzt wird ein Exchange Server 2010. hier gibt es den ...

Windows Server
Downgrade von Windows Server 2016 auf 2012 - Wie vorgehen?
Frage von EstefaniaWindows Server13 Kommentare

Guten Ich habe eine Frage an Erfahrene unter euch. Durch einen InPlace Upgrade wurde Windows Server 2012 auf die ...

Datenschutz
Telematikinfrastruktur Erfahrungsaustausch
Frage von MOS6581Datenschutz12 Kommentare

Moin, unter meinen Kunden befinden sich auch einige Ärzte, welche sich künftig mit der Telematikinfrastruktur-Geschichte der Gematik herumärgern dürfen. ...

Windows Server
Delgegierte OU via RDP verwalten - Objektverwaltung zuweisen
gelöst Frage von TOAOICEWindows Server12 Kommentare

Hallo, ich habe folgendes Problem. Ich möchte in meiner Domäne (Server2016), einer Gruppe (OUAdmin) Berechtigungen auf die OU Test ...