HERBERS Excel-Forum - das Archiv
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!

objOptionen.Cells(1, 1) owT
Rudi

AW: VBA variables Tabellenblatt ansprechen
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.
Tino

AW: sollte Dim objOption As Range sein. oT.
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!
Stefan

Danke!
und Rudi sein Vorschlag? oT.
Tino

AW: und Rudi sein Vorschlag? oT.
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!