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...
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
Wie immer danke ich dir sehr Berni werde es direkt testen und Feedback geben.
Okay irgendwie passiert nichts, das Tabellenblatt auf welchem ich doppelt klicken will heisst "Notes" das Ziel Sheet ist "Notes Sighting-Round"
Und der Code steht selbstverständlich im Modul des Tabellenblatts "Notes"?
Außerdem wäre es kein Fehler, im Code jeweils auch an den richtigen Stellen das Blatt "Notes" anzugeben. Also statt
Code:
Case "B13"
Range("B13").Copy
.Range("B9").PasteSpecial (xlPasteAll)
jeweils
Code:
Case "B13"
Sheets("Notes").Range("B13").Copy
.Range("B9").PasteSpecial (xlPasteAll)
Hab mal die Datei abgespeckt und hochgeladen.
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"
...
Ich musste zwar "vermaledeiten" mal googlen :19:
aber nun ja ich kann dir nur Danken Berni
klappt
Hi Uwe,
wie kommst du darauf? Was hat Select Case denn damit zu tun?
Nach Ende der Anweisung steht der Cursor ganz normal im Bearbeitungsmodus in der Zelle.