PDA

Vollständige Version anzeigen : Zelle in anderem Tabellenblatt ansprechen


Mattes
27.04.2009, 09:43
Hallo Zusammen,

ich habe hier eine kleine Excel Anwendung. In der Mappe gibt es ein Blatt in dessen Zellen Pfadangaben hinterlegt sind. Das Blatt heißt "Configsheet" und ist das zweite Blatt in der Mappe.

Diese Pfadangaben muß ich nun auslesen:
Sub test5()
Dim pfad As String
pfad = Worksheets(2).Range("b3")
Workbooks.Open Filename:=pfad
End Sub
Das klappt, allerdings kann ich nicht garantieren, dass das Configsheet immer an zweiter Stelle steht. Also habe ich es über den Namen probiert:
Sub test5()
Dim pfad As String
pfad = Worksheets("Configsheet").Range("b3")
Workbooks.Open Filename:=pfad
End Sub
Da erhalte ich aber den Laufzeitfehler9: Index außerhalb des gültigen Bereichs.

Was mache ich falsch?

Gruß,
Mattes

myfake
27.04.2009, 10:01
Hallo Mattes,

diese Fehlermeldung erhalte ich nur, wenn das Sheet "Configsheet" nicht existiert. Ich habe Deinen zweiten Code gerade mal getestet. "Configsheet" war dabei an der dritten Stelle. Und es hat geklappt.

cu
myfake

Mattes
27.04.2009, 10:10
... danke!
Conifgsheet:stupid:

Gruß,
Mattes

chris-kaiser
27.04.2009, 10:31
Hallo Mattes

besser wäre es wenn du das sheet über den Codenamen ansprechen würdest.
diesen siehst du wenn du Alt+F11 drückst im Objektexplorer
und kannst diesen unter den Eigenschaften ändern.

Vorteil dabei ist, das der Code unabhängig vom Tabellenblattnamen und Reihenfolge ist. (der Anwender könnte den Blattnamen umändern und der Code würde denoch fehlerfrei laufen)

Sub test5()
Dim pfad As String
pfad = configsheet.Range("b3")
Workbooks.Open Filename:=pfad
End Sub

Mattes
27.04.2009, 10:37
Hi Chris,

das klingt gut, aber wie ist denn der genaue Name dann?
Bei mir steht im VBA Editor Tabelle2(Configsheet).

Lautet der Code dann:
Pfad = Tabelle2(configsheet).Range("b3")


EDIT:

Hab's gerade gesehen:
ich muß im Objektexplorer den Namen vergeben und der Code bleibt wie er ist, richtig?

Gruß,
Mattes

chris-kaiser
27.04.2009, 10:45
Hallo Mattes

wenn du den Namen nicht änderst

Pfad = Tabelle2.Range("b3")

würde das reichen.

ansonsten so wie in meiner Demo habe ich den Codenamen in den Eigenschaften geändert.

bei dieser Variante gibt es kein worksheets(...
oder sheets(..

sondern es reicht der Codname.cells(..
oder Codename.Range(..

Mattes
27.04.2009, 10:49
Ahh, Danke!
Wieder was gelernt!

Gruß,
Mattes