Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1920to1924
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

VBA-Editor Zellbezüge bei Änderungen

VBA-Editor Zellbezüge bei Änderungen
06.03.2023 12:49:16
Frag
Moinsen,
wenn ich in einem Arbeitsblatt Änderungen vornehme (Spalten oder Zellen einfügen) wie wird dann eine automatische Übernahme der Zellbezüge im VBA-Editor verwirklicht?
z.B. ist dieser Code im VBA Editor "programmiert"
Sheets("Eingabe").Select
ActiveSheet.Range("C7").Select
Selection.Copy
Sheets("Datenfelder").Select
ActiveSheet.Range("B" & ActiveSheet.Rows.Count).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues
Sheets("Eingabe").Select
Jetzt muss ich auf dem Tabelleblatt "Eingabe" noch Änerungen vornhemen und füge eine Spalte ein. Ich kann im Code keine Änderung erkennen. Muss ich tatsächlich jeden Zellbezug im VBA-Editor manuell ändern? Im Beispiel dann von B zu C ?
VG Tom

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Editor Zellbezüge bei Änderungen
06.03.2023 13:00:19
onur
JA.
AW: VBA-Editor Zellbezüge bei Änderungen
06.03.2023 13:52:15
GerdL
Moin Tom!
Sub Unit()
Sheets("Datenfelder").Range("B1").Name = "Basis1" 'Demo Namensvergabe
Sheets("Datenfelder").Range("B:B").EntireColumn.Insert 'Demo
Sheets("Eingabe").Range("C7").Copy
Sheets("Datenfelder").Range("Basis1").EntireColumn.Cells(Rows.Count). _
End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Sheets("Eingabe").Select
End Sub
Gruß Gerd
AW: VBA-Editor Zellbezüge bei Änderungen
06.03.2023 14:54:19
Daniel
Hi
das geht nicht automatisch. Der Quellcode ist einfacher Text und VBA weiß nicht, dass es ein Zellbezug ist, den man anpassen muss.
um das Problem zu umgehen, dh um den Code so zu schreiben dass man ihn nicht anpassen muss, gibts jetzt verschiedene möglichkeiten.
Wenn du eine Überschriftenzeile hast und sich die Überschrift entsprechend mit verschiebt, dann kannst du nach der Überschrift suchen:
sp = Sheets("Datenfelder").rows(1).Find(what:="Überschrift der Spalte", lookat:=xlwhole).column
Sheets("Datenfelder").Cells(Rows.count, sp).end(xlup).offset(1, 0).PasteSpeical xlpastevalues
oder du gibst der Zelle in er Überschriftenzeile in Excel im Namensmanager einen Namen. In VBA kannst du dann in der Range-Funktion diesen Namen anstelle der Zelladresse verwenden. Dieser Name verschiebt sich beim Einfügen oder Löschen von Zellen mit.
also wenn du z.B. der Zelle B1 den Namen "Ziel" gibst, dann
Sheets("Datenfelder").Cells(Rows.Count, Range("Ziel").column).End(xlup).Offset(1, 0).PasteSpecial xlpastevalues
einfacher wäre es natürlich, wenn du den Namen der untersten Zelle geben würdest:
Range("Ziel").End(xlup).Offset(1, 0).PastSpecial xlpastevalues
aber dann besteht die Gefahr ,dass diese nicht von den relevanten Einfügungen und Löschungen betroffen ist.
Gruß Daniel
Anzeige

242 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige