Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1768to1772
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

CutCopyMode: welche Zellen sind markiert

CutCopyMode: welche Zellen sind markiert
08.07.2020 10:30:43
Sebastian
Hallo zusammen,
ich möchte gerne in einer Worksheet_SelectionChange-Sub rausfinden, welche Zellen zum kopieren markiert sind (also wenn man Strg+C drückt und die Zellen dann einen gestrichelten Rand bekommen).
Beispiel:
1. User klickt auf Zelle A1, dann Strg+ C
2. User klickt auf Zelle A2: in der SelectionChange-Sub kann ich über Application.CutCopyMode = 1 und die vorherige Auswahl von A1 (in Variable gespeichert) rausfinden, dass der User die Zelle A1 markiert hat
3. Der User fügt jetzt nicht die Werte in A2 ein
4. Stattdessen klickt er auf A3 und drückt dann wieder Strg + C. Er hatte also ursprünglich A1 kopiert, nirgends eingefügt und dann aber eine andere Zelle (A3) markiert und diese dann kopiert. Wenn der User jetzt auf A4 klickt, möchte ich wissen, dass A3 zum kopieren markiert ist. Und auch wen er jetzt noch mehrfach rumklickt ohne einzufügen, möchte ich immer noch wissen, dass A3 zum kopieren markiert ist.
Hoffe das war verständlich...
Hat jemand eine Idee?
LG Sebastian

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CutCopyMode: welche Zellen sind markiert
08.07.2020 10:40:30
Werner
Hallo,
in ein allgemeines Modul:
Public raKopierbereich As Range
Sub Schaltfläche3_Klicken()
MsgBox raKopierbereich.Address(0, 0)
End Sub

Ins Codemodul des Tabellenblattes, das du überwachen willst:
Option Explicit
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Set raKopierbereich = Selection
End Sub
Gruß Werner
AW: CutCopyMode: welche Zellen sind markiert
08.07.2020 10:52:25
Daniel
Hi
ich wüsste nicht, dass es einen Weg gibt um rauszufinden, welcher Zellbereich zum Kopieren markiert ist.
für den Fall von STRG+C könntest du dir einen Workaround basteln, in dem du folgendes Makro schreibst und der Tastenkombination STRG+C zuweist:
Public WasWurdeKopiert
Sub Kopieren_und_protokollieren()
set WasWurdeKopiert = Selection
Selection.Copy
End Sub

dann kannst du über die Variable WasWurdeKopiert abfragen, was zuletzt kopiert wurde (und das muss nicht immer ein Zellbereich sein)
für die anderen Kopiermethoden (z.B. über das Kontextmenü der Zelle) funktioniert das allerdings nicht.
Gruß Daniel
Anzeige
AW: CutCopyMode: welche Zellen sind markiert
08.07.2020 15:25:40
Sebastian
Danke Daniel, geniale Idee. Das hilft weiter!
Vergiss meinen Beitrag...
08.07.2020 11:09:06
Werner
Hallo,
...du wolltest ja quasi eine Überwachung von Str/C
Daniels Vorschlag funktioniert. Auf diesen "Workaround" wäre ich jetzt nicht gekommen.
Gruß Werner
AW: Vergiss meinen Beitrag...
08.07.2020 15:26:36
Sebastian
Werner, trotzdem danke! Den BeforeRightClick kannte ich noch nicht.
Gerne u. Danke für die Rückmeldung. o.w.T.
08.07.2020 21:25:49
Werner
AW: Vergiss meinen Beitrag...
08.07.2020 16:11:53
Sebastian
Hier meine finalen Lösungen:
A: Wenn der User Strg+C drückt
Sub Kopieren_und_protokollieren()
'Diese Sub wird mit Str+c ausgeführt. Also immer wenn der User eine Zelle kopiert.
Set varWasWurdeKopiert = Selection
Selection.Copy
End Sub
Dem Makro wurde die Tastenkombination Strg+c zugewiesen
B: Der User macht einen Rechtsklick und wählt dann im Kontextmenu den Befehl kopieren aus
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Call Kopieren_und_protokollieren_2
End Sub

Sub Kopieren_und_protokollieren_2()
'Diese Sub wird ausgeführt, bevor der User einen Rechtsklick macht und dann möglicherweise auf  _
kopieren klickt.
Set varWasWurdeKopiert = Selection
End Sub

Im SeletionChange dann auf CutCopyMode = 1 prüfen (klappt für A und B):
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode = 1 Then
Msgbox varWasWurdeKopiert.Address
End If

Jetzt ist lediglich die Kopierfunktion, wenn der User über das normale Menü/Ribbons bzw. den Schnellzugriff geht noch nicht abgefangen. Aber damit kann ich in diesem Fall leben.
Anzeige

17 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige