Clever-Excel-Forum

Normale Version: Zellen per Doppelklick kopieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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  Blush klappt
(21.02.2019, 12: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. Wink

Gruß Uwe
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.
Seiten: 1 2