AW: Referenzierung? Danke - eine Frage
12.12.2018 10:17:16
Werner
Hallo,
ist eigentlich nicht so kompliziert.
Um sauber auf ein bestimmtes Blatt zu referenzieren mußt du vor jedem Range-Objekt (Range, Cells, Rows, Columns) jeweils das entsprechende Blatt mit angeben.
Das ist für dein Beispiel jetzt nicht besonders schwierig:
Worksheets("Tabelle1").Range("A24:D55").Cut Destination:=Worksheets("Tabelle1").Range("a27:d58")
Somit liegen dein Quellbereich und dein Zielbereich auf dem Blatt Tabelle1
Schreibst du z.B.:
Worksheets("Tabelle1").Range("A24:D55").Cut Destination:=Range("a27:d58")
dann ist dein Quellbereich auf Tabelle1, dein Zielbereich aber (da ohne Blatt vor Range) auf dem gerade aktiven Tabellenblatt. Das kann, muss aber nicht das selbe Blatt sein. Wenn in diesem Beispiel gerade Tabelle2 das aktive Blatt ist, dann wäre dein Quellbereich auf Tabelle1, dein Zielbereich aber auf Tabelle2.
Alleine vom Schreibaufwand wird das Ganze dann aufwändig, wenn du deine Bereiche in der Range(cells(... schreibweise angibst.
Das wäre für dein Beispiel mit korrekter Referenzierung beider Bereiche auf Tabelle1 dann:
Worksheets("Tabelle1").Range(Worksheets("Tabelle1").Cells(24, 1), Worksheets("Tabelle1").Cells(55, 4)).Cut Destination:=Worksheets("Tabelle1").Cells(27, 1)
Um das zu kürzen kann man die With - End With Klammerung (wie du das hast) verwenden.
Um dabei dann aber den Range auf das im With angegebene Blatt zu referenzieren mußt du vor jedem Range-Objekt (Range, Cells, Rows, Columns) einen Punkt setzen.
Das wäre in der Range(Cells(... schreibweise:
With Worksheets("Tabelle1")
.Range(.Cells(24, 1), .Cells(55, 4)).Cut Destination:=.Cells(27, 1)
End With
oder eben mit deiner schreibweise:
With Worksheets("Tabelle1")
.Range("A24:D55").Cut Destination:=.Range("A27")
End With
Übrigens reicht es wenn du für die Zielbereich die linke obere Zelle angibst.
Gruß Werner