Excel VBA Range-Objekt?
Ich hätte zwei Fragen zu VBA in Excel über das Range-Objekt. Es wäre sehr nett, wenn mir jemand weiterhelfen könnte.
1_Frage
Worksheets(3).Range("A2:C3").Select
Auf dem dritten Arbeitsblatt wird der Bereich A2 bis C3 markiert. Klappt solange das dritte Arbeitsblatt aktiv ist, d. h. ich habe es anklickt.
Befinde ich mich z. B. auf worksheets(2) kann der Befehl Worksheets(3).Range("A2:C3").Select nicht mehr ausgeführt werden?
Laufzeitfehler 1004 Anwendungs- oder Objektorientierter Fehler
2_Frage
Dim Bereich as Range
Set Bereich = worksheets(3).Range("A2:C3")
Bereich.select
Die Zuweisung über Set kann ich ausführen, egal welches Arbeitsblatt ich angeklickt habe. Jedoch Bereich.select funktioniert nur, wenn ich mich wieder auf Blatt 3 befinde (bzw. dieses angeklickt habe)?
Sonst Laufzeitfehler 1004...
Kann mir hier jemand bitte weiterhelfen. Danke!
2 Antworten
1) Das ist so. Du musst halt erst das Worksheet auswählen.
Sheets("Tabelle1").Activate
Sheets("Tabelle1").Range("A2:C3").Select
2)dito:
Dim bereich As Range
Dim blatt As Worksheet
Set bereich = Worksheets(3).Range("A2:C3")
Set blatt = Worksheets(3)
blatt.Activate
bereich.Select
Zumindest habe ich bisher keine andere Lösung gefunden.
Aber vielleicht ist ja ein anderer der Experten hier schlauer?!
Vielen Dank! Falls jemand noch eine andere Lösung kennt, bitte melden.
Erst gilt es zu ergründen "warum" du den Bereich selektieren willst ?
Was soll denn im Anschluss getan werden.
"Select", "Activate" als Dinge die normal durch den User gemacht werden machen Excel Makros sehr langsam.
Also, gilt es z.b den Bereich auf dem anderen Blatt zu kopieren, so geht dies komplett ohne select. Auch vieles anderes kann auf nicht aktiven Blättern erledigt werden, ohne dass es das aktuell aktiv ist.
Also, schildere mal deinen Anwendungsfall, dann gibt es sicher noch eine passende Lösung.