Tabellenblatt=Feldinhalt?

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Tabellenblatt=Feldinhalt?
von: golem
Geschrieben am: 05.11.2003 09:50:58

Hallo,
wie kann ich durch eine Schleife abfragen ob der Inhalt eines string-Arrays gleich dem Tabellennamen ist?

for i=0 to 100
For Each ws In ThisWorkbook.Worksheets
for x=0 to 100
if arr(x)=ws.NAme then cells(...)=arr(x)
next
next
next

Bild


Betrifft: AW: Tabellenblattname im Feld?
von: Galenzo
Geschrieben am: 05.11.2003 10:24:39

Hallo,
etwas kryptisch, deine Fragestellung....
Ich hab's so verstanden:
Es soll für alle Tabellenblätter geprüft werden, ob der Name des Blattes auch in einer Liste vorhanden ist oder nicht.
Hab' ich so gelöst:


Private Sub CommandButton1_Click()
Dim As Variant
Dim arr As Variant
Dim wks As Worksheet
    
    arr = Array("Tabelle1", "Tabelle2", "Tabelle9")

    For Each wks In Worksheets
        v = Application.Match(wks.Name, arr, 0)
            If IsError(v) Then
                MsgBox (wks.Name & vbCrLf & " nicht im Feld")
            Else
                MsgBox (wks.Name & vbCrLf & " im Feld enthalten")
            End If
    Next

End Sub

Viel Spaß beim Nachbasteln und viel Erfolg dabei!


Bild


Betrifft: AW: Tabellenblattname im Feld?
von: golem
Geschrieben am: 05.11.2003 10:36:33

Hi Galenzo,
dein Code ist ein brauchbarer Ansatz aber nicht ganz nachvollziehbar für mich z.B.
was bedeutet v = Application.Match(wks.Name, arr, 0)
In der XL hilfe habe ich den nicht gefunden (weder nur "match" noch beides zusammen).


Bild


Betrifft: AW: ein paar Erklärungen zur Prozedur
von: Galenzo
Geschrieben am: 05.11.2003 10:49:52

Hallo golem,
MATCH ist einfach die in Excel bekannte Funktion =VERGLEICH(...) im VBA angewendet.
Dazu schaust du in die EXCEL-Hilfe zu dieser Funktion

Noch ein paar Erläuterungen zu der Prozedur.
Mit arr=Array(blabla... lege ich erstmal nur das Array mit den vorgegebenen Namen fest. Dieses Array müßtest du aber laut Aufgabenstellung schon da haben.
Nun werden alle Blätter der Mappe durchlaufen (das ist die for..each.. Schleife).
Es wird nun mit VERGLEICH geprüft, ob der Name des gerade durchlaufenen Blattes (Worksheet.Name) irgendwo in dem Vorgabefeld vorkommt. Wird er gefunden, gibt's eine Indexnummer zurück, die die Stelle angibt, an der's gefunden wurde. Wurde es nicht gefunden, gibT VERGLEICH einen Fehler zurück. Dieses wir in der Zeile if iserror(v) abgefragt - wenn's kein Fehler, dann kommt die erste Message, wenn's ein Fehler ist, kommt die 2. Message (vbCrLF ist dabei nur ein Zeilenumbruch innerhalb der Meldung)

Ist die Aufgabe damit gelöst oder trifft meine Lösung den Nagel noch nicht auf den Kopf - du schreibst ja, daß es NUR ein ANSATZ ist...

mfg


Bild


Betrifft: AW: ein paar Erklärungen zur Prozedur
von: golem
Geschrieben am: 05.11.2003 11:02:40

Hallo,
habe in dem Beitrag weiter oben (zu Hajo_Zi) geantwortet, da steht auch der Code...

Es ist der Nagelkopf getroffen aber nur mit dem Hammerstiel :)

Gruß
Golem


Bild

Beiträge aus den Excel-Beispielen zum Thema " Übertragen von dedizierten Datenreihen"