Anzeige
Archiv - Navigation
1900to1904
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

Zellbezug durch VBA verschieben

Zellbezug durch VBA verschieben
28.09.2022 09:13:57
Marcus
Hallo,
ich habe eine Excel-Datei in der auf dem Blatt "Woche gesamt" z.B. in den Zellen B3-G3 ein Zellbezug auf das Blatt "Tagesverlauf und Jahresverlauf" gesetzt ist.
Nun muss ich wöchentlich den Bezug in diesen Zellen um 7 Zeilen nach unten setzen.
Als Beispiel: B3 hat aktuell den Bezug auf ='Tagesverlauf und Jahresverlauf'!I289
Wenn ich ein VBA-Skript laufen lasse, soll dieses aus I289 nun I296 als Bezug setzen.
Gerne auch als Range für die aktuell gewählten Zellen um es nicht einzeln für jede Zelle machen zu müssen.
Ist dies möglich?
Vielen Dank im Voraus für jede Hilfe

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellbezug durch VBA verschieben
28.09.2022 09:40:39
{Boris}
Hi,
wenn ich das richtig verstanden habe, z.B. so - hier mal bezogen auf die aktive Zelle (darin steht der bisherige Bezug: ='Tagesverlauf und Jahresverlauf'!I289)
ActiveCell.Formula = "='Tagesverlauf und Jahresverlauf'!I" & Range(ActiveCell.Formula).Row + 7
VG, Boris
AW: Zellbezug durch VBA verschieben
28.09.2022 10:18:46
Marcus
Hi Boris,
zunächst mal vielen Dank dafür!
Das Problem bei dem Code ist, dass der Zellbezug sich nach Ausführung immer auf die Spalte i bezieht.
Zeile 5 ist der Bezug aber immer auf Spalte J und Zeile 7 immer auf Spalte Q usw.
Die originale Datei ist deutlich umfangreicher als die Beispieldatei.
Gibt es nicht die Möglichkeit das ich z.B. die Zellen B3-G3 markiere und das Skript nun bei all diesen Zellen den Bezug um 7 Zellen nach unten setzt?
Gleiches Verhalten dann wenn ich anschließend die Zellen B7-G7 markiere und so auch hier alle Zellbezüge um 7 nach unten versetzt werden.
Anzeige
AW: Zellbezug durch VBA verschieben
28.09.2022 10:34:06
{Boris}
Hi,
so wird Zeile und Spalte ausgelesen - musst nur per Schleife über alle gewünschten Zellen machen:

Dim s As String
s = ActiveCell.Formula
ActiveCell.Formula2R1C1 = "='Tagesverlauf und Jahresverlauf'!R" & Range(s).Row + 7 & "C" & Range(s).Column
VG, Boris
AW: Zellbezug durch VBA verschieben
28.09.2022 10:26:42
Der
Hallo,
wenn es sich nach der Woche richtet, kann man das eventuell per Formel lösen oder muss das händisch erfolgen (aus welchem Grund auch immer)?
Gruß
Michael
AW: Zellbezug durch VBA verschieben
28.09.2022 11:06:50
Marcus
Hallo Michael,
richtig, es richtet sich nach der Woche.
Händisch muss das nicht erfolgen nur dürfen eben keine weiteren Zellen oder Zeilen eingefügt werden.
Anzeige
AW: Zellbezug durch VBA verschieben
28.09.2022 11:12:29
Der
Dann könnte man den Bezug doch per Formel anhand der Woche, z. B. mit INDEX, anpassen.
AW: Zellbezug durch VBA verschieben
28.09.2022 11:19:41
GerdL
Moin,
falls noch erforderlich.

Dim C As Range
For Each C In Selection
If C.HasFormula And InStr(C.Formula, "Tagesverlauf und Jahresverlauf") Then
X = C.Formula
y = StrReverse(Val(StrReverse(X)))
C.Formula = Replace(X, y, y + 7)
End If
Next
Gruß Gerd
AW: Zellbezug durch VBA verschieben
28.09.2022 11:41:04
Marcus
Hallo Gerd,
vielen Dank auch Dir für die Unterstützung!
Jetzt klappt alles wie gewünscht, nur in den Zellen in Spalte C wird statt +7 durch das Skript +70 gemacht?!
Bei allen anderen Zellen funktioniert es wie gesagt einwandfrei.
Kannst Du mir sagen wo der Fehler liegt bitte?
VG
Marcus
Anzeige
AW: Zellbezug durch VBA verschieben
28.09.2022 12:10:25
GerdL
Nein, ohne die verwendeten Tabellen u. den eingesetzten Code leider nicht.
Aber folge doch dem anderen Vorschlag u. regle es mit Hilfe der Zeilenbestimmung in der Formel selbst über die Kalenderwoche von HEUTE(), ggf in einer Hilfszelle oder einem Namen.
Gruß Gerd
AW: Zellbezug durch VBA verschieben
28.09.2022 14:43:21
Daniel
Hi
machs doch so
schreibe den Zellbezug ='Tagesverlauf und Jahresverlauf'!I289 in der Form: =Index('Tagesverlauf und Jahresverlauf'!I:I;289+$A$1)
das machst du mit allen Zellbezügen, die jede Woche um 7 nach unten verschoben werden müssen.
dann erhöhst du einfach nur noch jede Woche den Wert in A1 um 7.
den Wert in A1 kannst du auch per Formel errechnen lassen, wie genau hängt natürlich davon ab, wann das passieren soll (Montags, Dienstags, sonntags)
eine Möglichkeit wäre =kalenderwochen(heute();21)*7+x oder =Obergrenze(Heute()-x;7)
dann geht das vollautomatisch auch ohne Makro.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige