Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1168to1172
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

2 * DoubleKlick unabhängig voneinander

2 * DoubleKlick unabhängig voneinander
Claudia
Hallo guten Morgen liebe Helfer,
könnt Ihr mir bitte bei meinem kleine Problem helfen, denn ich komme einfach nicht weiter.
Mit nachstehendem Makro im Tabellenblatt füge ich per Doppelklick in Zelle E7 die aktuelle Uhrzeit ein. Soweit so gut.
Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim zeit As String
zeit = Right(Now(), 8)
Range("E1").FormulaR1C1 = zeit
Selection.NumberFormat = "hh:mm:ss"
End Sub

Jetzt möchte/muss ich aber eine zweite Zeit mittels DoubleClick im gleichen Tabellenblatt nur in Zelle F7 eingeben, unabhängig voneinander.
Zweimal obiger Code geht nicht da dann Fehlermeldung "Mehrdeutiger Name" kommt.
Was muss ich mach?
Danke für Eure Hilfe
Gruß
Claudia

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: 2 * DoubleKlick unabhängig voneinander
27.07.2010 08:44:11
Nepumuk
Hallo,
versuch es mal so:
Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
    With Target
        If .Address = "$E$1" Or .Address = "$F$7" Then
            .Value = Time
            .NumberFormat = "hh:mm:ss"
        End If
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: 2 * DoubleKlick unabhängig voneinander
27.07.2010 08:49:11
Claudia
Hallo Nepumuk,
super, vielen Dank funzt einwandfrei.
Gruß
Claudia
AW: 2 * DoubleKlick unabhängig voneinander
27.07.2010 08:53:05
Nepumuk
Hallo,
ich vergaß Cancel auf True zu setzen. Sonst bist du ja nach dem Doppelklick im Eingabemodus:
Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
    With Target
        If .Address = "$E$1" Or .Address = "$F$7" Then
            .Value = Time
            .NumberFormat = "hh:mm:ss"
            Cancel = True
        End If
    End With
End Sub

Gruß
Nepumuk
Anzeige
...Beide anhand der Zelle unterscheiden,...
27.07.2010 09:23:44
Luc:-?
…Claudia…!
Dim zeit(1) As Date
zeit(0) = TimeValue(Right(CStr(Now), 8)): zeit(1) = …
If Not Intersect(Target, Range("E7")) Is Nothing Then
Cancel = True: Target = zeit(0): Target.NumberFormat = "hh:mm:ss"
ElseIf Not Intersect(Target, Range("F7")) Is Nothing Then
Cancel = True: Target = zeit(1): Target.NumberFormat = "hh:mm:ss"
End If
Du nutzt bisher die Möglichkeiten der EventProc gar nicht richtig aus und befindest dich deshalb nach Doppelklick stets im Bearbeitungsmodus der angeklickten Zelle, die dann auch die selektierte ist, die bei dir anschließend formatiert wird. Du könntest bisher zwar auf eine beliebige Zelle mit stets gleichem Ergebnis klicken, dann wäre aber ggf die formatiert und nicht E7 (falls der Bearbeitungsmodus nicht zum ProzAbbruch führt)! Außerdem wäre der RightClick (analog!) viel bequemer oder noch besser SelectionChange!
Also alles doch recht ungeschickt → du solltest mal in der VBE-Hilfe zur Bedeutung der ProzParameter Target und Cancel nachlesen…!
Wenn du auf eine beliebige Zelle klicken willst, um E7 und F7 zu füllen, kannst du das in der jetzigen Form deines Makros durchaus tun — du musst nur die entsprechenden Befehle hinzufügen. Insofern ist deine Frage eigentl unverständl und deutet auf ein Nullverständnis der Abläufe deinerseits hin. Müll wäre dann nur das höchst überflüssige, weil sinnlose .FomulaR1C1 (→ .Value würde reichen, kann aber auch entfallen, weil es die Default-Eigenschaft von Range ist!) und die ebenfalls sinnlose Formatierung, denn einerseits trifft die in diesem Fall weder E7 noch F7 (du kannst bei deinem Code ja auch auf bspw A1 klicken und hast die Zeit in E7!) und andererseits brächte das auch nix, denn die Zellen enthalten dann Text. Du müsstest also wenigstens … = TimeValue(zeit) schreiben und dann die Formatierung direkt auf die gefüllte Zelle, nicht auf ein ominöses Selection, das ohnehin Target entspricht, beziehen. Mit Cancel = True würdest du auch in diesem Fall verhindern, dass du bei Doppelklick in den Zellbearbeitungsmodus gelangst, allerdings wäre das dann bei deiner Form immer so, was sicher nicht wünschenswert ist…! Also irgendwie wohl doch nicht so recht das richtige Ereignis erwischt… ;->
Morn, Gruß Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige