Hey Leute, ich habe ein Makro um per Dopppelklick in die Zelle, genau diese Zelle an eine andere Stelle zu kopieren.
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Range("B13").Copy Sheets("Notes Sighting-Round").Range("B9").PasteSpecial (xlPasteAll) End Sub
Dies funktioniert gut. Allerdings möchte ich dies für mehrere Zellen individuell haben. Also wenn ich E13 klicke soll er in D9 kopieren, wenn ich R15 doppelt klicke, soll er in D154 kopieren etc...
20.02.2019, 16:06 (Dieser Beitrag wurde zuletzt bearbeitet: 20.02.2019, 16:06 von MisterBurns.)
Finde ich grundsätzlich keine gute Idee, was ist, wenn der User versehentlich aus Gewohnheit doppelklickt? Aber das mal nur zur Idee.
Wenn es eine Logik gibt für das Kopieren, dann kann man das entsprechend mit wenigen Zeilen umsetzen. Beispielsweise die Zelle soll immer um X Spalten nach rechts und Y Zeilen nach unten kopiert werden. Das scheint aber anhand deiner Beschreibung nicht so zu sein. Dann bleibt dir wohl nur, für jede Zelle eine eigene Codezeile zu schreiben.
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Sheets("Notes Sighting-Round") Select Case Target.Address(False, False) Case "B13" Range("B13").Copy .Range("B9").PasteSpecial (xlPasteAll) Case "E13" Range("E13").Copy .Range("D9").PasteSpecial (xlPasteAll) Case "R15" Range("R15").Copy .Range("D154").PasteSpecial (xlPasteAll) End Select End With Application.CutCopyMode = False End Sub
Schöne Grüße Berni
Folgende(r) 1 Nutzer sagt Danke an MisterBurns für diesen Beitrag:1 Nutzer sagt Danke an MisterBurns für diesen Beitrag 28 • elamigo
Ich habe mal die With-Anweisung umgedreht. Der Grund, wieso es nicht geht, sind aber deine vermaledeiten verbundenen Zellen!
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Sheets("Notes") Select Case Target.Address(False, False) Case "B13:C13" .Range("B13").Copy Sheets("Notes Sighting-Round").Range("B9").PasteSpecial (xlPasteAll) Case "E13:F13" .Range("E13").Copy Sheets("Notes Sighting-Round").Range("D9").PasteSpecial (xlPasteAll) Case "R15" .Range("R15").Copy Sheets("Notes Sighting-Round").Range("D154").PasteSpecial (xlPasteAll) End Select End With Application.CutCopyMode = False End Sub
Falls du noch möchtest, dass die Bearbeitung der doppelgeklickten Zelle abgebrochen wird, kannst du nach jedem Case noch ein Cancel = True einbauen...
Code:
... Select Case Target.Address(False, False) Case "B13:C13" .Range("B13").Copy Sheets("Notes Sighting-Round").Range("B9").PasteSpecial (xlPasteAll) Cancel = True Case "E13:F13" ...
Schöne Grüße Berni
Folgende(r) 1 Nutzer sagt Danke an MisterBurns für diesen Beitrag:1 Nutzer sagt Danke an MisterBurns für diesen Beitrag 28 • elamigo
21.02.2019, 15:48 (Dieser Beitrag wurde zuletzt bearbeitet: 21.02.2019, 16:14 von Kuwer.)
(21.02.2019, 13:05)MisterBurns schrieb: Falls du noch möchtest, dass die Bearbeitung der doppelgeklickten Zelle abgebrochen wird, kannst du nach jedem Case noch ein Cancel = True einbauen...
Das ist das Standardverhalten von Select Case, deshalb überflüssig.