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 […]
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 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!
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.
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.
Vielen Dank für deine Hilfe und einen schönen Tag.
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
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.
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