VBA zeilen kopieren mit relativem Zellbezug

Beispiel - (Microsoft Excel, Visual Basic, Relativer Zellbezug)

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich hätte da eventuell eine gute und einfache Lösung für dich.

Das ist ein Code den du direkt im VBA der Tabelle ablegst. Jetzt ist es egal in welcher Zelle du einen Doppelklick machst, er kopiert immer die Zeile ein nach unten in der du einen Doppelklick ausübst.

Ich habe schon versucht das ganze auf Spalte A zu beschränken, dass bekomme ich aber nicht ganz hin weil der Code nicht alleine von mir ist. Vielleicht hat ein VBA Spezi da einen Tipp zu.

Kannst ja mal testen und schauen ob das was für dich ist :-))

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
r = ActiveCell.Row
ThisWorkbook.ActiveSheet.Rows(Target.Row).Select
    Selection.copy
    Selection.Insert Shift:=xlDown
    ActiveSheet.Paste
    Application.CutCopyMode = False
Cancel = True
End Sub
maximilianus7  30.01.2015, 00:20
  1. zeile nach sub:

    if target.column <> "A" exit sub
    
0
ericsan03 
Fragesteller
 02.02.2015, 10:19
@maximilianus7

im allgemeinen funktioniert deine Lösung schmiddi, für meine Formatvorlage allerdings eine wenig schöne Lösung... Falls ich nichts anderes herausfinde werde ich deine Lösung verwenden :)

Danke

0
schmiddi1967  02.02.2015, 10:22
@ericsan03

Bitte gerne, aber In wie fern eine wenig schöne Lösung??

Du wolltest doch das eine neue Zeile eingefügt wird ohne das sich die Bezüge verschieben. Genau das passiert doch damit?

0

Ich bin ein kleines Stück weiter gekommen, indem ich die Option "relative Aufzeichnung" für die Makros aktiviert habe. Allerdings habe ich nun das Problem, dass der Nutzer vor der Aktivierung des Makros genau eine bestimmte Zelle ausgewählt haben muss, sonst verschiebt sich alles ...

Hat jemand einen Lösungsansatz dafür?

schmiddi1967  31.01.2015, 12:10

Wenn du neue Antworten machst Anstatt auf einen Beitrag zu Antworten bekommt man das hier kaum mit und stolpert nur ausversehen darüber. Ich habe das jetzt auch nur aus Zufall gelesen.

Am besten immer direkt auf eine Antwort regieren, dann bekommt der jenige auch mit das was passiert ist, so bekommt man keine Meldung das es was neues gibt.

Hast du meine Möglichkeit mal in betracht gezogen? Da ist der Bezug nämlich egal.

0

Ich hatte dieses Problem auch schon öfter.
Ohne mich jetzt in Deinen Code vertieft zu haben: ich konnte es immer lösen, indem ich anstatt von oben nach unten von unten nach oben gearbeitet habe: die Adressen verschieben sich ja nur unterhalb der eingefügten Zeile.
Auch Schleifen kann man ja rückwärts laufen lassen, braucht halt ein bisschen Phantasie, was im Einzelfall alles anders zu machen ist.
Es kann allerdings Konstellationen geben, wo das nicht geht. Dann mit offset(Zeile, Spalte) addressieren oder ähnliches.