VBA: With Sheets aus Label.Caption

Hallo,

ich suche nach einer Möglichkeit, den With Sheets-Befehl von VBA mittels einer Label.Caption zu definieren.

Mein derzeitiges Makro lautet:

With Sheets(„Tabelle2“)
Set rngFound = .Columns(1).Find(What:=Beispieltextbox, After:=.Cells(.Rows.Count, 1), LookIn:=xlValues, LookAt:=xlWhole)
If rngFound Is Nothing Then
MsgBox „Nicht gefunden“
Else […]

Ich möchte, dass die Angabe des Sheets per Label.Caption definiert wird. Also ungefähr so:

With Sheets(„Label1.Caption“)
Set rngFound = .Columns(1).Find(What:=Beispieltextbox, After:=.Cells(.Rows.Count, 1), LookIn:=xlValues, LookAt:=xlWhole)
If rngFound Is Nothing Then
MsgBox „Nicht gefunden“
Else […]

Gibt es eine Möglichkeit dies zu realisieren?

Vielen Dank im Voraus

Hallo,
wenn ich das richtig verstehe, dann soll aus einem Label (Label1) die Beschriftung genommen werden, um so das Tabellenblatt auszuwählen? Wenn das der Fall ist, dann sollte es funktionieren, wenn

With Sheets("Label1.Caption")

durch

With Sheets(Label1.Caption)

ersetzt wird (also ohne „“, da es sich bei dem Wert Caption um einen String handelt). Hier sollte aber auf jeden Fall eine Überprüfung stattfinden, ob das Tabellenblatt auch wirklich existiert, da sonst ein Fehler geworfen wird.

Ich hoffe das hilft weiter.

Hallo,

vielen Dank für die Hilfe. Ganz genau, anhand der Beschriftung eines Labels soll ein Tabellenblatt gewählt werden.

Jedoch habe ich die Variante With Sheets(Label1.Caption) bereits versucht. Es erzeugt dann aber einen Fehler:

„Fehler beim Kompilieren: Argument ist nicht optional“

Ich habe die Eingaben geprüft, das Tabellenblatt mit der passenden Bezeichung ist vorhanden und die Beschriftung ist korrekt.

Könnte es noch eine andere Möglichkeit geben?

Vielen Dank im Voraus

Ich habe die Bezeichnung jetzt geändert. Vorher handelte es sich um Zahlen, diese habe ich durch Buchstaben ersetzt. Das Makro funktioniert nun einwandfrei. Vielen Dank für die Hilfe!

Freundlichen Gruß, André

Schön, dass es jetzt funktioniert.

Freundliche Grüße, sweidner

Hallo Andre,
leider habe ich nicht viele VBA-Kenntnisse.
So wie es aussieht musst Du Dein Arbeitsblatt nicht so:

With Sheets(„Label1.Caption“)

sondern

With Sheets(Label1.Caption)

benennen, denn der Inhalt des Labels ist ja interessant.
Gibt es in VBA ein Kombinationsfeld?
Dann könntest Du die Bezeichnungen der einzelnen Sheets dort zum einfacheren Auswählen dort eintragen.

Viel Erfolg
Klaus

Hallo Klaus,

ich glaube das war ein Teil des Fehlers. Da ich zuvor einen fixen Wert drin stehen hatte und es erst später umändern wollte, habe ich zuerst nicht darauf geachtet. Dann habe ich die „“ entfernt und es ging auch nicht. Letzlich hatte ich wohl einen Schreibfehler in den Bezeichnungen und dies hat zu einer Fehlermeldung geführt. Ich war mir auch nicht sicher wie der Befehl genau aufgebaut wird.

Nun habe ich aber alle Bezeichnungen geändert und jetzt funktioniert alles problemlos. :smile:

Vielen Dank für deine Hilfe und einen schönen Tag.

Hallo Andre,

auf die Schnelle folgende Antwort:

Verwende anstatt „Label1.Caption“ Label1.Text .

Dann müsste das klappen!

Oder?

Gruß
Thomas

Hallo André,
das Problem hatte ich auch mal. VBA akzeptiert in der Klammer nur Stringwerte und keine Variablennamen. Ich würde vor dem „with“ in einer Schleife den Index des Sheets ermitteln und dann damit arbeiten, also z.B.:

dim ind%, i%
ind=0
for i=1 to Sheets.count
if Sheets(i).Name=Label1.Caption then ind=i
next
if ind>0 then
with Sheets(ind)

end with
end if

Viele Grüße
Dieter

Lasse einfach die Anführungszeichen vor und hinter Label1.Caption weg. Dann wird die Bezeichnung als Variable genommen.

Grüße,
Frank

Hallo André,
ohne es ausprobiert zu haben, würde ich die Label.Caption vorher einer Variable zuordnen, also
z.B.: Blatt = Userform1.Label1.Caption
und dann
With Sheets(Blatt)

Voraussetzung ist natürlich, dass dieses Makro innerhalb der Userform gestartet wird.

Gruß,
Joe

Ja gibt es, einfach ohne Anführungszeichen und das Tabellenblatt als Objektcontainer davor geschrieben (hier als Beispiel befindet sich das Label1 auf dem Blatt Tabelle1):
With Sheets(Tabelle1.Label1.Caption)

End With

Hallo Viertel,

das ist leider eine Frage mit der ich nichts anfangen kann.

Gruß Hugo