Excel VBA: Range auf anderem Blatt

AugustusOne

Lt. Junior Grade
Registriert
Juli 2013
Beiträge
276
Hallo zusammen,

ich habe folgendes vor:

Auf Blatt 2 manuell einen Bereich (Range) auswählen, z.B. C2 bis D5.
Per VBA Wechsel auf Blatt 1 und dort die gleiche Range auswählen.

Hintergrund: Auf unterschiedlichen Blättern sind - immer im gleichen Bereich - Tabellen mit Werten, die ich auf einer Seite zusammenführen möchte.

Mein Code sieht wie folgt aus:

Code:
Sub Aggregieren()

    ' Manuell ausgewählte Range auf Blatt 2 in Variable speichern'
    Sheets(2).Activate
    Dim SelRange As Range
    Set SelRange = Selection
    
    ' Wechsel zu Blatt 1 und Vornehmen der gespeicherten Auswahl'
    Sheets(1).Select
    Sheets(1).Activate
    SelRange.Range
              
End Sub

Ich erhalte dann den Fehler:
Fehler beim Kompilieren:
Unzulässige Verwendung einer Eigenschaft

Habe schon diverse andere Dinge versucht, komme aber leider nicht mehr weiter.
Kann mir vielleicht einer von euch helfen?

Vielen Dank und besten Gruß
August :)
 
Ich glaube das ist ein bisschen unschön, weil eine Zell-"Range" auch immer an ein Worksheet gebunden ist. Dieses Worksheet kann man sich zum Beispiel ausgeben lassen mit:

Debug.Print SelRange.Parent.Name

Ich weiß jetzt nicht auswending, ob man die Parent Eigenschaft überschreiben kann, wenn ja, dann einfach dein gewünschtes Worksheet setzen und die Range so verwenden wie du es möchtest.

Sollte das so nicht gehen, dann musst du ein neues Range-Objekt erstellen und das mit den Daten vom alten Range-Objekt befüllen. Das ist etwas fummelig, sollte aber gehen.
 
So, kann man das auch machen

Sub Test()
Dim selRange As String

selRange = Selection.Address(False, False, xlA1, False)

Sheets(1).Select
ActiveSheet.Range(selRange).Select

End Sub
 
Ich habe mir zum Test mit
Code:
MsgBox (SelRange.Row & ", " & SelRange.Column & " bis " & SelRange.Rows.Count + SelRange.Row - 1 & ", " & SelRange.Column + SelRange.Columns.Count - 1)

Den ausgewählten Bereich anzeigen lassen. Das funktioniert auch, allerdings hatte ich gehofft, eine elegantere / kürzere Version nutzen zu können.
Ergänzung ()

G-Red schrieb:
So, kann man das auch machen

Sub Test()
Dim selRange As String

selRange = Selection.Address(False, False, xlA1, False)

Sheets(1).Select
ActiveSheet.Range(selRange).Select

End Sub

Hammer, genau was ich gesucht habe. Vielen Dank! :)
 
Kein Thema ;)
 
Zurück
Oben