Mit der Makrolösung, die ich Ihnen hier vorstellen werde, können Sie sehr einfach Zellen markieren und ebenso die Markierung wieder aufheben. Auf diese Art können selbst mit Blattschutz versehene Tabellenblätter an ausgewählten Zellen gekennzeichnet werden. In der Praxis können Sie mit diesem Prinzip Checklisten erstellen, Druckbereiche definieren oder Schriftwechselvorlagen mit Auswahlfeldern erweitern.
Der folgende VBA-Code wird im Visual Basic-Editor in das Tabellenblatt kopiert, in dem Sie die Funktion nutzen wollen. Die Funktion steht anschließend ausschließlich in diesem Tabellenblatt zur Verfügung. Wollen Sie die Funktion in mehreren Tabellenblättern nutzen, muss das Makro in jedes Tabellenblatt kopiert werden.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("C3:C6")) Is Nothing Then Me.Unprotect If Target = "" Then Target = "X" Else Target = "" End If Me.Protect Cancel = True End If End Sub
Im Beispiel oben können die Zellen C3, C4, C5 und C6 per Doppelklick markiert werden. Ein weiterer Doppelklick auf die bereits markierte Zelle hebt die Markierung wieder auf. Einen andern Zellbereich können Sie auswählen, wenn Sie Range(“C3:C6”) entsprechend abändern.
Am Ende wird automatisch der Blattschutz ohne Passwort aktiviert. Möchten Sie keinen Blattschutz auf das Tabellenblatt legen, können Sie die beiden dafür entsprechenden Zeilen aus dem Makro entfernen. Sollten Sie zukünftig jedoch doch noch den Blattschutz verwenden, denken Sie daran, auch das Makro entsprechend zu ergänzen.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("C3:C6")) Is Nothing Then If Target = "" Then Target = "X" Else Target = "" End If Cancel = True End If End Sub
Alternativ kann zum Beispiel auch dynamisch das aktuelle Tagesdatum per Doppelklick in die Zelle überschrieben werden. Hinweis: Beim folgenden VBA-Codebeispiel werden bereits vorhandene Zellinhalte überschrieben!
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("C3:C6")) Is Nothing Then Target = Format(Now, "DD.MM.YYYY") Cancel = True End If End Sub
Ein einfaches Beispiel können Sie mit der nachfolgenden Testdatei in Excel selbst testen und ggf. Anpassungen ausprobieren, den Code ändern oder erweitern.
Zellen per Doppelklick markieren
Danke
Hallo,
Erstmals vielen Dank für das Veröffentlichen Ihres Wissens.
Ich möchte gerne, dass sich bei dieser Zelle wo ich anklickte, einen Wert aus einer anderen Zelle eingetragen wird. Ist dies möglich? Besten Dank für Dein Feedback.
Freundliche Grüsse Daniel
@Daniel Eberhard: Für diesen Fall würde ich die Tastenkombinationen Strg + C (kopieren) und Strg + V (einfügen) empfehlen. Schneller geht es nicht. Mit einem Makro können Sie hier nicht arbeiten. Würde man ein Makro programmieren, dass bei jedem Klick den Zellwert mit einem anderen Wert überschreibt, wäre die Arbeitsmappe praktisch nicht mehr nutzbar. Das macht daher überhaupt keinen Sinn.
Hallo,
Vielen Dank für die Rückmeldung. Würde es dann so gehen? Wenn ich zum Beispiel die Zelle “A4” mit Doppelklick anwähle und dabei füllt es mir die Zelle “B4, B5, B6,….” mit einem Wert aus der Zelle “C8”?
Freundliche Grüsse
Daniel Eberhard
@Daniel Eberhard: Ich verstehe den Nutzen nicht. Wozu braucht man ein Makro um einen Zelleninhalt aus einer anderen Zelle zu übertragen?
Hallo,
ist es auch möglich, wenn ich mehrere Zellen zur Bewertung nebeneinander habe, dass immer nur ein Kreuz per Doppelklick gesetzt wird und automatisch das andere wieder gelöscht wird? Somit kann ich jederzeit meine Bewertung anpassen, ohne zuvor wieder das alte Kreuz selbst löschen zu müssen:
Vielen Dank vorab
Lucas Fritz
OK,
Klappte soweit, allerdings nur auf eine Reihe (R 31:R230) begrenzt.
Bekomme es aber leider nicht hin, das auf weitere Reihen zu erweitern. W31:W230, Y31:Y230 usw…
Ne kleine Hilfe wäre toll…
@Tommy: Das kann z.B. wie folgt realisiert werden: Range(“R31:R230,W31:W230,Y31:Y230”)