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

VBA variables Tabellenblatt ansprechen

Forumthread: VBA variables Tabellenblatt ansprechen

VBA variables Tabellenblatt ansprechen
Stefan
Hallo zusammen,
ich möchte über Eingabe in Zelle A1 bestimmen aus welchem externen Tabellenblatt Daten eingelesen werden sollen. Leider schaffe ich es nicht die Zelle als Variable zu gestalten:
Public Sub data()
Dim objWB As Workbook, objWS As Worksheet, objWSImport As Worksheet, objOption As Worksheet
Dim strFile As String
Dim lngLast As Long, lngCol As Long, lngLastCol As Long
Dim varRes As Variant
On Error GoTo ErrExit
GMS
MsgBox "Bitte zu importierende Datei auswählen!"
strFile = Application.GetOpenFilename("Excel Dateien (*.xls; *.xlsx; *.xlsm)," & _
"*.xls; *.xlsx; *.xlsm")
If strFile = "Falsch" Then Exit Sub
Set objOption = ThisWorkbook.Sheets("Optionen")
Set objWSImport = ThisWorkbook.Sheets("Daten")
Set objWB = Workbooks.Open(strFile)
If Not SheetExist(objOptionen(1, 1), objWB.Name) Then
MsgBox "Die ausgewählte Datei enthält kein Sheet mit dem Namen ""Aufbereitet""! Der Import wurde abgebrochen."
GoTo ErrExit
Else
Set objWS = objWB.Sheets(objOptionen(1, 1))
End If
Irgendwie ist das "objOptionen(1, 1)" nicht korrekt, ich weiss leider nicht wie ich es umschreiben muss...
Vielen Dank für die Hilfe!
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
objOptionen.Cells(1, 1) owT
16.11.2009 16:14:31
Rudi
AW: VBA variables Tabellenblatt ansprechen
16.11.2009 16:18:17
Tino
Hallo,
vielleicht objOption als Range Deklarieren und im Code als Zelle verwenden.
Dim objOption As Worksheet
Set objOption = ThisWorkbook.Sheets("Optionen").Cells(1,1)
If Not SheetExist(objOptionen.Value, objWB.Name) Then
'usw...
Gruß Tino
sollte Dim objOption As Range sein. oT.
16.11.2009 16:19:07
Tino
Anzeige
AW: sollte Dim objOption As Range sein. oT.
16.11.2009 16:28:31
Stefan
das mit dem Range deklarieren müsste klappen! Konnte es jedoch nicht ausprobieren weil ich plötzlich eine Fehlermeldung erhalte: "Fehler beim Kompilieren! Variablen nicht definiert" in der ersten Zeile
Public Sub data() ?
sorry hat sich erledigt!
16.11.2009 16:31:18
Stefan
Danke!
und Rudi sein Vorschlag? oT.
16.11.2009 16:48:49
Tino
Anzeige
AW: und Rudi sein Vorschlag? oT.
16.11.2009 16:52:55
Stefan
den habe ich gar nicht weiter ausprobiert weil mir das mit dem .Value besser gefällt da ich später nochmals auf den Wert zurückgreife!
;
Anzeige
Anzeige

Infobox / Tutorial

VBA: Tabellenblatt über Variable ansprechen


Schritt-für-Schritt-Anleitung

  1. Variablen deklarieren: Beginne mit der Deklaration der benötigten Variablen, um ein Tabellenblatt über eine Variable anzusprechen. Hier ein Beispiel für die grundlegende Struktur:

    Public Sub data()
        Dim objWB As Workbook
        Dim objWS As Worksheet
        Dim objOption As Range
        Dim strFile As String
  2. Dateiauswahl: Verwende Application.GetOpenFilename, um den Benutzer aufzufordern, eine Datei auszuwählen:

        strFile = Application.GetOpenFilename("Excel Dateien (*.xls; *.xlsx; *.xlsm)," & _
        "*.xls; *.xlsx; *.xlsm")
  3. Tabellenblatt festlegen: Setze die Variable objOption auf die Zelle, aus der der Tabellenblattname entnommen werden soll:

        Set objOption = ThisWorkbook.Sheets("Optionen").Cells(1, 1)
  4. Tabellenblatt überprüfen: Stelle sicher, dass das angegebene Tabellenblatt in der ausgewählten Arbeitsmappe existiert:

        If Not SheetExist(objOption.Value, objWB.Name) Then
            MsgBox "Das angegebene Tabellenblatt existiert nicht!"
            Exit Sub
        End If
    
        Set objWS = objWB.Sheets(objOption.Value)
  5. Daten importieren: Füge dann die Logik zum Importieren der Daten hinzu, basierend auf dem geladenen Arbeitsblatt.


Häufige Fehler und Lösungen

  • Fehlermeldung: "Variablen nicht definiert": Dieser Fehler tritt oft auf, wenn eine Variable nicht deklariert wurde. Achte darauf, alle Variablen korrekt zu deklarieren und die entsprechenden Option Explicit-Anweisungen zu verwenden.

  • Falsches Blatt ansprechen: Wenn du versuchst, auf ein Blatt zuzugreifen, das nicht existiert, erhältst du eine Fehlermeldung. Stelle sicher, dass der Name des Blattes in der Zelle richtig eingegeben ist.


Alternative Methoden

Eine alternative Methode zur Verwendung von Variablen in VBA ist die Nutzung von Dictionary-Objekten. Diese ermöglichen es dir, mehrere Werte zu speichern und effizient zuzugreifen. Hier ein einfaches Beispiel:

Dim wsNames As Object
Set wsNames = CreateObject("Scripting.Dictionary")
wsNames.Add "Optionen", "Blatt1"

Du kannst dann auf die entsprechenden Blätter über den Schlüssel zugreifen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du ein spezifisches Tabellenblatt über eine Variable ansprechen kannst:

Public Sub Beispiel()
    Dim wsName As String
    wsName = ThisWorkbook.Sheets("Optionen").Cells(1, 1).Value
    If SheetExist(wsName, ThisWorkbook.Name) Then
        MsgBox "Das Tabellenblatt " & wsName & " existiert."
    End If
End Sub

Das Beispiel zeigt, wie du den Wert aus Zelle A1 verwenden kannst, um zu überprüfen, ob das entsprechende Tabellenblatt existiert.


Tipps für Profis

  • Nutze Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler frühzeitig zu erkennen.
  • Verwende Fehlerbehandlungsroutinen, um deine Programme robuster zu gestalten. Zum Beispiel kannst du On Error Resume Next in Kombination mit If...Then-Anweisungen verwenden, um Fehler abzufangen.
  • Überlege, ob die Nutzung von With...End With-Blöcken in deinem Code sinnvoll ist, um die Lesbarkeit zu erhöhen und redundanten Code zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich ein Tabellenblatt dynamisch ansprechen?
Du kannst den Namen des Tabellenblattes aus einer Zelle lesen und diesen Namen dann in deinem Code verwenden, wie im Schritt-für-Schritt-Beispiel gezeigt.

2. Was tun, wenn ich eine Fehlermeldung beim Öffnen der Datei erhalte?
Überprüfe, ob der Dateipfad korrekt ist und ob die Datei existiert. Achte auch darauf, dass die richtige Dateiendung verwendet wird (z.B. .xls, .xlsx, .xlsm).

3. Wie kann ich sicherstellen, dass alle Variablen korrekt deklariert sind?
Aktiviere Option Explicit in deinem VBA-Editor. Dadurch bist du gezwungen, alle Variablen zu deklarieren, bevor du sie verwendest, was viele Fehler vermeiden kann.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige