Frage von hyper777, 31

Mit Excel und VBA einen Namen in eine Zelle eingeben und anschliessend das Blatt mit entsprechendem Namen auswählen?

Hallo zusammen

Ich arbeite zurzeit an einem kleinen Excel-Projekt. Nun habe ich folgendes Problem und überhaupt keine Ahnung, wie ich das lösen kann:

Ich will in der Zelle D4 einen Blattnamen eingeben. Anschliessend sollte dieses Blatt mit VBA aktiviert oder ausgewählt werden.

Bei Unklarheiten bitte melden.

Ich bedanke mich schon jetzt für eure hilfreichen Antworten. 👍

Gruss Hyper777☺

Antwort
von PWolff, 10

Zelle D4 bekommt den Namen "Zieltabelle".

(Zelle markieren, auf die Auwahlbox links oben klicken, wo "D4" drin steht, "D3" mit "Zieltabelle" überschreiben, mit Enter bestätigen)

Code der Tabelle, die diese Zelle enthält:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Tabellnamenszelle As Range
Set Tabellnamenszelle = Me.Parent.Names("Zieltabelle").RefersToRange
If RangeContains(Target, Tabellnamenszelle) Then
On Error Resume Next
Me.Parent.Worksheets(Tabellnamenszelle.Value).Activate
If Err.Number = 0 Then Exit Sub
On Error GoTo 0
MsgBox "Keine Tabelle mit dem Namen """ + Tabellnamenszelle.Value + """ gefunden."
End If
End Sub

Code in einem (ggf. neu eingefügten) Modul:

Option Explicit

Function RangeContains(Big As Range, Small As Range) As Boolean

If Big.Row > Small.Row Then RangeContains = False: Exit Function
If Big.Row + Big.Rows.Count < Small.Row + Small.Rows.Count Then RangeContains = False: Exit Function
If Big.Column > Small.Column Then RangeContains = False: Exit Function
If Big.Column + Big.Columns.Count < Small.Column + Small.Columns.Count Then RangeContains = False: Exit Function

RangeContains = True
End Function
Kommentar von PWolff ,

Die Funktionen sollten für die Produktion noch verfeinert werden.

Z. B. sollte, wenn das Aktivieren der Tabelle fehlschlägt, die Nachricht von Err.Number abhängen - ob die Tabelle wirklich nicht vorhanden ist oder ausgeblendet ist oder ggf. sonstiges.

(Beachte: Err.Number steht nach "On Error Goto 0" nicht mehr zur Verfügung.)

Die RangeContains-Funktion sollte noch berücksichtigen, dass ein Range-Objekt mehrere Areas (Unterbereiche - diese müssen nicht zusammenhängen) enthalten kann.

Antwort
von hyper777, 21

Also: Ich habe ein Registerblatt "Suche". In diesem wird in der Zelle D4 ein Blattname eingegeben. Dieser Name habe ich dann als Variabel "sucheBlatt" abgespeichert. Nun soll es alle Blätternamen durchsuchen und das Blatt mit dem entsprechenden Namen aktiviert oder geöffnet werden.

Hoffe, dass es nun verständlicher ist.

Antwort
von Sharrky, 24

Ich brauch eine genauere beschreibung. kann dir sicher dann helfen.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten