Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tabellenblatt auswählen mit msgbox

Forumthread: Tabellenblatt auswählen mit msgbox

Tabellenblatt auswählen mit msgbox
15.02.2009 02:03:00
Muthig
Hallo,
im folgenden Makro wird durch Eingabe in eine msgbox ein Tabellenblatt ausgewählt. In der Datei sind 53 Tabellenblätter, ein Tabellenblatt heißt "Anmeldung", die anderen sind mit "1", "2"."3" usw. bis "52" benannt. Bei den zweistelligen Tabellenblättern funktioniert es, aber bei den einstelligen nicht. Kann mir jemand helfen ?

Sub TabSelect()
Dim wks As Worksheet
Dim strWks As String
strWks = InputBox("Bitte Kalenderwoche (Tabellenblatt) angeben:")
If strWks = "" Then Exit Sub
For Each wks In Worksheets
If InStr(UCase(wks.Name), UCase(strWks)) > 0 Then
wks.Select
Exit Sub
End If
Next wks
Beep
MsgBox "Kein Blatt gefunden!"
End Sub


Wo liegt der Fehler ? Bin nur VBA- Anfänger. Vielen Dank schon mal im Voraus.
Freundliche Grüße
Thomas

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Tabellenblatt über INPUTBOX auswählen
15.02.2009 03:16:00
NoNet
Hallo Thomas,
Du meinst wohl INPUTBOX und nicht MSGBOX !
Der Grund, dass es bei 2-stelligen KWs nicht funktioniert, liegt an der von dir verwendeten Logik :
Du durchsuchst alle Tabellenblätter und aktivierst das erste, das die gesuchte Zahl enthält.
Beispiel : Die Zahl "17" ist NUR in Blatt 17 enthalten, das funktioniert also.
Die Zahl "1" ist jedoch in 51, 41, 31, 21, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 1 enthalten - je nach Reihenfolge wird also das zuerst gefundene Blatt aktiviert - das gleiche gilt für alle anderen einstelligen Nummern !
Ändere den Code, folgendermassen :
VBA-Code:
Sub TabSelect()
    Dim wks As Worksheet
    Dim strWks As String
    strWks = InputBox("Bitte Kalenderwoche (Tabellenblatt) angeben:")
    If strWks <> "" Then
        On Error Resume Next
        Err.Clear
        Set wks = Worksheets(strWks)
        If Err.Number > 0 Then
            Beep
            MsgBox "Blatt nicht gefunden!"
        Else
            wks.Select
            Set wks = Nothing
        End If
    End If
End Sub
Gruß, NoNet
AW: Tabellenblatt über INPUTBOX auswählen
Thomas

Hallo Nonet und Mathias,
vielen Dank für Eure Hilfe und den Erklärungen dazu. Die Variante von Nonet funktioniert hervorragend. Auch Die Erläuterungen dazu verstehe ich sogar. Warum mein Code nicht funktioniert, könnte daran liegen, dass ich die 52 Tabellenblätter nicht von Hand angelegt habe, sondern mir ein passendes Makro dazu im Internet gesucht habe. Nochmals vielen Dank und eine schöne Woche.
Thomas
alles getestet ... und i.O
Matthias

Hallo Thomas
Ich kann Deinen Fehler nicht nachvollziehen.
evtl. sind bei Dir Leerzeichen in den Tabs 1-9 vorhanden.
Also evtl. heißen Deine Blätter nicht
"1" sondern
" 1" oder
"1 " beachte das/die Leerzeichen vor/nach 1
https://www.herber.de/bbs/user/59475.xls
Bei mir klappt alles einwandfrei.
getestet mit XL2000 und XL2007.
Gruß Matthias
Anzeige
AW: Tabellenblatt über INPUTBOX auswählen
15.02.2009 23:03:00
Thomas
Hallo Nonet und Mathias,
vielen Dank für Eure Hilfe und den Erklärungen dazu. Die Variante von Nonet funktioniert hervorragend. Auch Die Erläuterungen dazu verstehe ich sogar. Warum mein Code nicht funktioniert, könnte daran liegen, dass ich die 52 Tabellenblätter nicht von Hand angelegt habe, sondern mir ein passendes Makro dazu im Internet gesucht habe. Nochmals vielen Dank und eine schöne Woche.
Thomas
Anzeige
alles getestet ... und i.O
15.02.2009 05:26:00
Matthias
Hallo Thomas
Ich kann Deinen Fehler nicht nachvollziehen.
evtl. sind bei Dir Leerzeichen in den Tabs 1-9 vorhanden.
Also evtl. heißen Deine Blätter nicht
"1" sondern
" 1" oder
"1 " beachte das/die Leerzeichen vor/nach 1
https://www.herber.de/bbs/user/59475.xls
Bei mir klappt alles einwandfrei.
getestet mit XL2000 und XL2007.
Gruß Matthias
Anzeige
;
Anzeige

Infobox / Tutorial

Tabellenblatt mit InputBox in Excel VBA auswählen


Schritt-für-Schritt-Anleitung

Um ein Tabellenblatt in Excel mit VBA auszuwählen, kannst du die folgende Methode verwenden. In diesem Beispiel wird eine InputBox verwendet, um den Namen des Tabellenblatts einzugeben:

Sub TabSelect()
    Dim wks As Worksheet
    Dim strWks As String
    strWks = InputBox("Bitte Kalenderwoche (Tabellenblatt) angeben:")
    If strWks = "" Then Exit Sub
    On Error Resume Next
    Set wks = Worksheets(strWks)
    If Err.Number > 0 Then
        Beep
        MsgBox "Blatt nicht gefunden!"
    Else
        wks.Select
    End If
End Sub

Diese Methode verwendet On Error Resume Next, um sicherzustellen, dass der Code nicht abbricht, wenn das Tabellenblatt nicht gefunden wird. Stattdessen wird eine Fehlermeldung angezeigt.


Häufige Fehler und Lösungen

  1. Leerzeichen im Blattnamen:

    • Stelle sicher, dass keine zusätzlichen Leerzeichen im Namen des Tabellenblatts vorhanden sind. Zum Beispiel könnte das Blatt " 1" oder "1 " heißen, was zu Problemen führen kann.
  2. Falsche Eingabe:

    • Wenn du eine Zahl wie "1" eingibst, kann es sein, dass mehrere Blätter diese Zahl enthalten (z.B. "1", "21", "31"). Achte darauf, dass du den genauen Namen des Blattes eingibst, um das richtige auszuwählen.
  3. Zugriffsprobleme:

    • Wenn du auf ein geschütztes Blatt zugreifen möchtest, stelle sicher, dass du die entsprechenden Berechtigungen hast.

Alternative Methoden

Eine alternative Methode, um ein Tabellenblatt auszuwählen, ist die Verwendung von Application.InputBox, da diese Funktion die Eingabetypen einschränken kann. Hier ist ein Beispiel:

Sub TabSelectAlternative()
    Dim wks As Worksheet
    Dim strWks As Variant
    strWks = Application.InputBox("Bitte Kalenderwoche (Tabellenblatt) angeben:", Type:=2)
    If strWks = False Then Exit Sub
    On Error Resume Next
    Set wks = Worksheets(strWks)
    If Err.Number > 0 Then
        Beep
        MsgBox "Blatt nicht gefunden!"
    Else
        wks.Select
    End If
End Sub

Hierbei wird der Typ der Eingabe auf Type:=2 gesetzt, was bedeutet, dass nur Texteingaben akzeptiert werden.


Praktische Beispiele

  1. Einfaches Beispiel:

    • Du hast ein Tabellenblatt mit dem Namen "Anmeldung". Um dieses auszuwählen, gib einfach "Anmeldung" in die InputBox ein.
  2. Zahleneingabe:

    • Wenn deine Tabellenblätter von "1" bis "52" nummeriert sind, gib die Zahl ein (z.B. "1" für das Blatt "1").
  3. Fehlerbehandlung:

    • Wenn du die Eingabe leer lässt, wird das Makro abgebrochen und es passiert nichts.

Tipps für Profis

  • Verwendung von Trim: Nutze die Trim-Funktion, um sicherzustellen, dass keine Leerzeichen bei der Eingabe berücksichtigt werden:
strWks = Trim(InputBox("Bitte Kalenderwoche (Tabellenblatt) angeben:"))
  • Fallunterschiede ignorieren: Um sicherzustellen, dass die Eingabe unabhängig von der Groß- und Kleinschreibung funktioniert, kannst du die UCase-Funktion verwenden.

  • Zugriff auf mehrere Blätter: Wenn du mit vielen Blättern arbeitest, kann es sinnvoll sein, eine Dropdown-Liste zur Auswahl der Blätter zu erstellen, anstatt manuell einzugeben.


FAQ: Häufige Fragen

1. Warum funktioniert die Auswahl für einstellige Zahlen nicht?
Die Auswahl funktioniert möglicherweise nicht, weil das Programm auch nach anderen Blättern sucht, die die gleiche Zahl enthalten. Achte darauf, den genauen Namen des Blattes einzugeben.

2. Kann ich die Methode auch für andere Excel-Versionen nutzen?
Ja, die vorgestellten VBA-Methoden sind in den meisten Excel-Versionen anwendbar, einschließlich Excel 2000 und Excel 2007. Achte darauf, dass die entsprechenden Sicherheitsoptionen für Makros aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige