Geben Sie das folgende Ereignismakro in den Arbeitsblatt-Codebereich von ein Sheet2
:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim A As Range Set A = Range("A5:A10") If Intersect(Target, A) Is Nothing Then Exit Sub Cancel = True Application.EnableEvents = False Target.Copy Sheets("Sheet1").Range("C3") Application.EnableEvents = True End Sub
Beachten Sie, dass der Code Sheet1 anstelle von Sheet 1 verwendet . (Ändern Sie dies, wenn Sie verwenden Sheet 1
)
Da es sich um Arbeitsblattcode handelt, ist es sehr einfach zu installieren und automatisch zu verwenden:
- Klicken Sie mit der rechten Maustaste auf den Namen der Registerkarte am unteren Rand des Excel-Fensters
- Wählen Sie Code anzeigen, um ein VBE-Fenster aufzurufen
- Fügen Sie das Zeug ein und schließen Sie das VBE-Fenster
Wenn Sie Bedenken haben, probieren Sie es zunächst auf einem Testarbeitsblatt.
Wenn Sie die Arbeitsmappe speichern, wird das Makro damit gespeichert. Wenn Sie später als 2003 eine Version von Excel verwenden, müssen Sie die Datei als .xlsm statt als .xlsx speichern
So entfernen Sie das Makro:
- Bringen Sie die VBE-Fenster wie oben
- Löschen Sie den Code
- Schließen Sie das VBE-Fenster
Weitere Informationen zu Makros im Allgemeinen finden Sie unter:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
und
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
Weitere Informationen zu Ereignismakros (Arbeitsblattcode) finden Sie unter:
http://www.mvps.org/dmcritchie/excel/event.htm
Makros müssen aktiviert sein, damit dies funktioniert!
EDIT # 1:
So lassen Sie zu, dass das Makro Daten in einem Arbeitsblatt zum Schutz ablegt:
- Schützen Sie das Blatt
- Entsperre bestimmte Zellen wie C3
- Schützen Sie das Arbeitsblatt erneut
Dadurch können das Makro (und der Benutzer) Daten in das Blatt eingeben und trotzdem Formeln usw. schützen.
EDIT # 2:
Um das Kopieren des Formats zu vermeiden, verwenden Sie stattdessen Folgendes:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim A As Range Set A = Range("A5:A10") If Intersect(Target, A) Is Nothing Then Exit Sub Cancel = True Application.EnableEvents = False Target.Copy Sheets("Sheet1").Range("C3").PasteSpecial Paste:=xlPasteValues Application.EnableEvents = True End Sub
Um die Routine nach einem "Kickstart" zu starten, fügen Sie dieses Makro in ein Standardmodul ein und führen Sie es aus:
Sub qwerty() Application.EnableEvents = True End Sub