Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
920to924
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
920to924
920to924
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Klick auf eine Zelle - Wert eintragen

Klick auf eine Zelle - Wert eintragen
04.11.2007 13:03:00
Larissa
Hallo,
ich mit einem einfachen Klick in einer Zelle von Spalte A ein "x" ein- oder austragen.
Dieses Makro habe ich gebastelt (für das Tabellenblatt). Es funktioniert aber nicht richtig:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 1 Then
Select Case Target
Case "x"
Target.Offset(0, 0).Value = ""
Case ""
Target.Offset(0, 0).Value = "x"
End Select
End If
End Sub


Das "x" wird erst nach "Enter" eingetragen und das dauert irgendwie so lange.
Hat jemand vielleicht eine Idee, wie das schneller und besser funktioniert?
Vielen Dank, Larissa

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Klick auf eine Zelle - Wert eintragen
04.11.2007 13:06:19
Josef
Hallo Larissa,
dafür nimmt man besser das Doppelklick-Ereignis.
' **********************************************************************
' Modul: Tabelle2 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Then
    Cancel = True
    If Target = "x" Then
        Target = ""
    Else
        Target = "x"
    End If
End If
End Sub

Gruß Sepp

Anzeige
AW: Klick auf eine Zelle - Wert eintragen
04.11.2007 13:19:33
Larissa
Danke Sepp,
stimmt, das funktioniert besser.
Dankeschön.
Larissa

AW: Klick auf eine Zelle - Wert eintragen
04.11.2007 13:51:00
Jean
Hallo Sepp,
zu Deinem Programm 2 Fragen:
A. Gibt es eine Regel wann man das Klick und wann man das Doppelklickereignis nehmen sollte?
B. Was bedeutet denn genau die folgende Zeile?
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Ich würde mich freuen, wenn Du kurz auf die Fragen eingehen würdest.
Gruß
Jean

AW: Klick auf eine Zelle - Wert eintragen
04.11.2007 14:04:00
Josef
Hallo Jean
Zu Frage 1:
Wann man das "Change" oder "Doppelklick" Ereignis verwendet, hängt davon ab was man machen will.
In Larissas Fall ist das Change-Ereignis meiner Meinung nach ungeeignet.
Probiere das mal in einer Tabelle
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
    Application.EnableEvents = False
    If Target = "x" Then
        Target = ""
    Else
        Target = "x"
    End If
    Application.EnableEvents = True
End If
End Sub

Zu Frage 2:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
End Sub


das ist das Ereignis, das bei einem Doppelklick in einer Zelle aufgerufen wird.

Gruß Sepp

Anzeige
AW: Klick auf eine Zelle - Wert eintragen
04.11.2007 14:12:37
Jean
Hallo Sepp,
vielen Dank für Dein überzeugendes Beispiel. Die Wirkung ist nun verstanden.
Unklar bleibt das BeforeDoubleClick, also das Wort Before, das ich mir nicht erklären kann.
Vielleicht hast Du auch dazu eine Begründung. Sonst bleibt dieses Detail mal offen.
Gruß
Jean

AW: Klick auf eine Zelle - Wert eintragen
04.11.2007 14:18:06
Daniel
Hi
zu A)
naja, Regeln gibts da nicht, das hängt auch vom Persönlichen Klickverhalten ab.
da ich aber zumbeispiel oft recht gedankenlos im Tabellenblatt herumklicke, halte ich es für sinnvoll,
- Makros, die berechungsrelevante Zellwerte verändern, mindestens durch den Doppelklick zu starten.
- Makros, keine Werte verändern, sondern nur bestimmte Sachen anzeigen und ansonsten keine die Berechnung verändernde Wirkung haben, kann man auch über den Einfachklick auslösen.
im Zweifelsfall muss man halt auspobieren, womit der Anwender besser zurecht kommt
zu B)
Worksheet_BeforeDoubleClick
sagt aus, daß das Makro bei einem Doppelklick gestartet wird
das Before deshalb, weil Excel beim Doppelclick selbst eine Aktion ausführen will (Öffnen des Bearbeitungsmodus), dein Makro aber vorher ausgeführt wird.
Target As Range
TARGET ist ein Range-Objekt, daß die Zelle beinhaltet, die Doppelt-geklickt wurde.
dieses Range-Objekt kannst du in deinem Kode verwenden.
Beispiel: Wert der Doppelt-gellicken Zelle um 1 erhöhen:

Target.Value = Target.Value +1



Cancel As Boolean

Wie gesagt, Excel will beim Doppelklick ja selber ne Aktion ausführen. (Bearbeitungsmodus öffnen)
wenn du jetzt irgendwo im Code


Cancel = True 


setzt, wird diese Aktion nicht ausgeführt, sondern nur dein Makro.
das ist z.B. Sinnvoll, wenn du durch den Doppelklick ne Userform aktivieren willst.
wäre dann der Zellbearbeitungsmodus aktiv, könntest du nicht direkt in der Userform arbeiten, sondern müsstest erst in eine andere Zelle klicken, um den Bearbeitungsmodus zu daktivieren.
gruß, Daniel

Anzeige
AW: Klick auf eine Zelle - Wert eintragen
04.11.2007 14:26:00
Jean
Hallo Daniel,
ich danke Dir für Deine Erläuterungen, die mich wieder ein Stück weiter bringen.
Bleibt noch eine Frage offen:
Was bewirkt die folgenden Zeile in den Codebeispielen?
Application.EnableEvents = False bzw. true
Da ist noch eine Verständnislücke vorhanden.
Gruß
Jean

AW: Klick auf eine Zelle - Wert eintragen
04.11.2007 14:49:28
Daniel
Hi
den Event-gesteuerten Makros ist es egal, ob das Event von Hand oder von einem anderen Makro ausgelöst wird.
dh. wenn du ein Worksheet_Change Makro hast, wird dieses immer aufgerufen, sobalt irgendwo ein Zellwert eins Tabellenblatt geschreiben wird.
das hat zur folge, daß sich die Event-Gesteuerten Makros gegenseitig bzw. wie im oben genannten Fall sich selbst aufrufen.
Das ist aber nicht immer erwünscht, weil es u.U. ein paar unangenehme Folgen haben kann wie lange Makrolaufzeiten.
Daher kann man das mit APPLICATION.ENABLEEVENTS = FALSE unterbinden.
man darf aber nicht vergessen, den Wert am Makroende wieder auf TRUE zu setzen, weil die Einstellung auch nach dem Makrolauf erhalten bleibt.
dies ist besonderst zu beachten, wenn das Makro mit Fehler vorzeitig abbricht.
dann musst du über den Editior im Direktfenster die EVENTS wieder von Hand aktivieren.
Gruß, Daniel
bzw kennst du die Hilfe-Funktion im Editor?
Cursor auf den Begriff setzen, den man erklärt haben will und dann F1 drücken.
wenn man sich mal eingelesen hat, ist diese Hilfe brauchbarer als man von Microsoft-Hilfen allgemein glaubt.

Anzeige
AW: Herzlichen Dank
04.11.2007 15:00:00
Jean
Hallo Daniel,
herzlichen Dank für die ausführliche Beantwortung meiner Fragen und auch für den Hinweis auf die Hilfe, die ich nun häufiger zu Rate ziehen werde.
Gruß
Jean
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge