Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1112to1116
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zahlenblöcke verschieben

Zahlenblöcke verschieben
Karl
Hallo,
ich würde gerne per Makro selektierte "Zahlenblöcke" um eine bestimmte Anzahl nach rechts bzw. links verschieben. Das ist soweit auch kein Problem gewesen. Aber jetzt komme ich einfach nicht weiter.
Wenn in einer Zelle z.B. "=3+1" steht, so verschiebt er es eine Spalte nach rechts. Dort steht jetzt auch "=3+1". Wenn in der Zelle aber bsplw. "=B1+B5" steht, so steht in der Spalte rechts daneben jetzt auch "=B1+B5". Ich hätte es aber ganz gerne, dass dort jetzt ="C1+C5" steht. Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt.
Vielen Dank schon mal für eure Hilfe.
Gruß Karl

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zahlenblöcke verschieben
27.10.2009 16:36:03
JogyB
Hi.
With Selection
.Copy Selection.Offset(1, 0)
.ClearContents
.ClearFormats
.ClearComments
End With
Das verschiebt z.B. eine Zeile nach unten und eine Spalte nach rechts.
Gruss, Jogy
sorry...
27.10.2009 16:36:48
JogyB
Hi.
So war es natürlich nur eins nach unten, hatte noch was ausprobiert.
Gruss, Jogy
Bereich verschieben
27.10.2009 19:46:29
Erich
Hi,
so klappt das aber nur unter "guten" Bedingungen - wenn sich Quell- und Zielbereich nicht überlappen.
Im folgenden Beispiel geht das schief:
Wenn A1:A2 selektiert ist, wird der Bereich mit
.Copy Selection.Offset(1, 0)
auf A2:A3 kopiert - so weit, so gut. Dann aber wird A1:A2 mit .ClearContents gelöscht - auch A2.
Das soll sicher nicht sein, man darf nur den Teil der Selection leeren, in den nicht kopiert wurde.
Das könnte so gehen:
(Hier kann auch noch gewählt werden, ob gelöscht werden soll (also kopiert oder verschoben)
und ob der Zielbereich selektiert werden soll.)

Option Explicit
Sub aTestA()
RngMove Selection, 1, 1, True, True
End Sub
Sub aTestB()
RngMove Selection, -1, -1, True, True
End Sub
' kopiert/verschiebt einen Bereich um Zeilen/Spalten
Sub RngMove(rngB As Range, lngRows As Long, lngCols As Long, _
bolDel As Boolean, bolSel As Boolean)
Dim rngNeu As Range, rngDif As Range
With rngB
Set rngNeu = .Offset(lngRows, lngCols)
.Copy rngNeu
If bolDel Then
Set rngDif = Intersect(rngB, ComplRect(rngNeu))
If Not rngDif Is Nothing Then rngDif.Clear
End If
If bolSel Then rngNeu.Select
End With
End Sub
' Komplement eines Rechteck-Bereichs zurück
Function ComplRect(rngA As Range) As Range
Dim zv As Long, zb As Long, sv As Long, sb As Long, rngT As Range
zv = rngA.Row:       zb = zv + rngA.Rows.Count - 1
sv = rngA.Column:    sb = sv + rngA.Columns.Count - 1
If zv > 1 Then Set rngT = Range(Rows(1), Rows(zv - 1))
If zb  1 Then
If rngT Is Nothing Then
Set rngT = Range(Cells(zv, 1), Cells(zb, sv - 1))
Else
Set rngT = Union(rngT, Range(Cells(zv, 1), Cells(zb, sv - 1)))
End If
End If
If sb 
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Bereich verschieben
28.10.2009 10:10:19
Karl
Hallo Jogy und Erich,
das klappt wunderbar. Vielen Dank!
Gruß Karl
AW: Bereich verschieben
28.10.2009 10:13:11
Karl
Ich hätte da doch noch einmal eine Frage! Und zwar wird ja jetzt auch die Formatierung (z.B. Rahmen, Zellfarbe usw.) mit verschoben. Kann man das verhindern?
Gruß Karl
AW: Bereich verschieben
28.10.2009 12:14:36
Karl
Hat sich erledigt, bei der RngMove musste nur rngDif.Clear nur ausgeschaltet werden.
Trotzdem nochmals vielen Dank

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige