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

Forumthread: Inhalt von einer Zelle as Worksheet Name

Inhalt von einer Zelle as Worksheet Name
01.07.2014 17:35:13
einer
Hallo Gemeinde,
Ich habe 3 Tabellen mit Namen "Eingabe", "B" und "C". Tabellen "B" und "C" gelten als Datenbank. Die Tabelle "Eingabe" gilt als Eingabentabelle. Jetzt möchte ich ein Modul mit VBA schreiben, wenn ich den Inhalt "B" und "C" in der Zelle F3 in Tabelle "Eingabe" eingebe, wird automatisch Tabelle "B" oder "C" je nach Inhalt in F3 activiert/dargestellt?
Ich habe mit folgendem Code ausprobiert aber es hat nicht geklappt. Kann mir jemand sagen wo mein Fehler ist? Da wäre ich echt dankbar!!
Sub Test()
Dim Treffer As Worksheet
Treffer.Name = Sheets("Eingabe").Range("F3").Value
Treffer.Select
End Sub

Gruß,
Han2883

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inhalt von einer Zelle as Worksheet Name
01.07.2014 18:24:11
einer
Moin
Code in den Code des Blattes "Eingabe"
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address = "$F$3" Then
If SheetExist(Target) Then
Worksheets(Target.Value).Activate
End If
End If
End Sub
Private Function SheetExist(ByVal sheetName As String, Optional Wb As Workbook) As Boolean
Dim wks As Worksheet
On Error GoTo ERRORHANDLER
If Wb Is Nothing Then Set Wb = ThisWorkbook
For Each wks In Wb.Worksheets
If LCase(wks.Name) = LCase(sheetName) Then SheetExist = True: Exit Function
Next
ERRORHANDLER:
SheetExist = False
End Function

gruss hary

Anzeige
AW: Inhalt von einer Zelle as Worksheet Name
02.07.2014 09:25:57
einer
Hallo Hary,
Danke Dir! jetzt funktioniert's super!! :-)
Aber nur noch eine Frage zum Verständnis, was macht die Funktion "SheetExist"?
Gruß Han2883

AW: Inhalt von einer Zelle as Worksheet Name
02.07.2014 09:41:11
einer
Moin
Diese prueft ob ein Blatt mit dem Namen vorhanden ist. Sonst(wenn wenn du mal was anderes eingibst) laeuft der Code in einen Fehler, da es das Blatt nicht gibt.
Also prueft man erst ob es ein Batt mit dem Namen gibt.
Mit SheetExist(Target) rufe ich die Function SheetExist auf und uebergebe den eingetragen Wert(Target) der Function.
Diese Pruft ob es ein Blatt Namens Target gibt und die Function gibt wahr(Blatt vorhanden)/falsch(Blatt nicht vorhanden) zurueck.
also heisst:
If SheetExist(Target) Then
wenn Rueckgabe der Function ist "wahr" dann
gruss hary

Anzeige
AW: Inhalt von einer Zelle as Worksheet Name
02.07.2014 11:41:46
einer
Alles klaro! schon wieder was Neues gelernt!
Vielen vielen Dank! :-)
Gruß Han2883
;
Anzeige
Anzeige

Infobox / Tutorial

Inhalt von einer Zelle als Arbeitsblattnamen verwenden


Schritt-für-Schritt-Anleitung

Um den Inhalt einer Zelle als Arbeitsblattnamen in Excel zu verwenden, kannst Du den folgenden VBA-Code verwenden. Dieser Code wird in das Modul des Arbeitsblattes eingefügt, welches den Zellinhalt überwacht.

  1. Öffne Excel und gehe zu dem Arbeitsblatt "Eingabe".
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Doppelklicke im Projekt-Explorer auf "Eingabe", um das entsprechende Modul zu öffnen.
  4. Füge den folgenden Code ein:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Address = "$F$3" Then
        If SheetExist(Target) Then
            Worksheets(Target.Value).Activate
        End If
    End If
End Sub

Private Function SheetExist(ByVal sheetName As String, Optional Wb As Workbook) As Boolean
    Dim wks As Worksheet
    On Error GoTo ERRORHANDLER
    If Wb Is Nothing Then Set Wb = ThisWorkbook
    For Each wks In Wb.Worksheets
        If LCase(wks.Name) = LCase(sheetName) Then SheetExist = True: Exit Function
    Next
ERRORHANDLER:
    SheetExist = False
End Function
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Gib in die Zelle F3 den Namen eines Arbeitsblattes (z.B. "B" oder "C") ein. Das entsprechende Arbeitsblatt wird automatisch aktiviert.

Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 9: Index außerhalb des gültigen Bereichs."

    • Lösung: Stelle sicher, dass der eingegebene Arbeitsblattname genau mit dem Namen des Arbeitsblattes übereinstimmt (Groß- und Kleinschreibung beachten).
  • Fehler: Das Arbeitsblatt wird nicht aktiviert.

    • Lösung: Überprüfe, ob die Funktion SheetExist korrekt arbeitet. Stelle sicher, dass der eingegebene Wert in F3 tatsächlich ein existierendes Arbeitsblatt ist.

Alternative Methoden

Eine alternative Methode könnte die Verwendung einer Dropdown-Liste in Zelle F3 sein, um die Eingabemöglichkeiten zu begrenzen. So kannst Du sicherstellen, dass nur gültige Arbeitsblattnamen eingegeben werden.

  1. Wähle die Zelle F3 aus.
  2. Gehe zu "Daten" > "Datenüberprüfung".
  3. Wähle "Liste" und gib die verfügbaren Arbeitsblattnamen ein (z.B. "B,C").
  4. Nun kannst Du aus der Dropdown-Liste wählen, was die Wahrscheinlichkeit von Fehlern verringert.

Praktische Beispiele

Wenn Du beispielsweise den Namen eines Arbeitsblattes hast, das "Daten" heißt, und Du diesen Namen in der Zelle F3 eingibst, wird das Arbeitsblatt "Daten" aktiviert, sobald Du die Eingabetaste drückst. Dies ist besonders nützlich, wenn Du häufig zwischen verschiedenen Arbeitsblättern wechseln musst.


Tipps für Profis

  • Nutze die Option Explicit-Anweisung am Anfang Deines Codes, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Wenn Du die Funktionalität erweitern möchtest, kannst Du weitere Bedingungen einfügen, die auf andere Zellen oder Bereiche reagieren.

FAQ: Häufige Fragen

1. Kann ich auch Arbeitsblätter mit Leerzeichen im Namen verwenden?
Ja, aber Du musst sicherstellen, dass Du den Arbeitsblattnamen genau so eingibst, wie er im Excel-Dokument angezeigt wird.

2. Was passiert, wenn der eingegebene Name kein gültiger Arbeitsblattname ist?
Die Funktion SheetExist gibt False zurück, und das Arbeitsblatt wird nicht aktiviert. Du kannst dies mit einer Fehlermeldung im Code verbessern, wenn Du möchtest.

3. Ist dieser Code in allen Excel-Versionen verfügbar?
Ja, der Code funktioniert in den meisten Versionen von Excel, die VBA unterstützen, einschließlich Excel 2010 und neuer.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige