Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1636to1640
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
Datum per Doppelklick in vordefinierte Zellber.
14.08.2018 20:36:32
Hakan
Hallo Forum :-)
Ich habe ein Anliegen mit zwei beinhaltenden Anforderungen.
Ich würde gerne per Doppelklick die Zeit im Format (hh:mm) in Zellbereiche eintragen können. Das Besondere hierbei. Dies soll in mehreren verschiedenen, durch den VBA-Code vordefinierten Zellbereichen, beispielsweise B1:D100, E1:G100 usw. möglich sein. Die Zellen außerhalb dieser vordefinierten Zellbereiche sollen diese Funktion explizit nicht beinhalten.
In den selben vordefinierten Zellbereichen soll ebenfalls das manuelle Eintragen der Zeit im Format (hh:mm) ohne die Eingabe das ":" möglich sein wobei das Einfügen dessen durch einen entsprechen VBA-Code bewerkstelligt werden soll.
Beispiel: Ich trage 1200 ein und es wird 12:00 automatisch nach Betätigen der Enter oder Tabtaste ausgegeben. Vielen Dank im Voraus für Ihre, eure Hilfe :-)

28
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelklick und Change
15.08.2018 09:10:22
hary
Moin
"beispielsweise B1:D100, E1:G100" kannst du zusammenfassen in B1:G100"
Ist das richtig B1:G100 ?
Versuchsweise erstmal so, ohne pruefung.
Das hier in den Code des Tabelle.
Const Bereich As String = "B1:G100"
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range(Bereich)) Is Nothing Then
Cancel = True
Application.EnableEvents = False
Target = Format(Time, "hh:mm")
End If
Application.EnableEvents = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range(Bereich)) Is Nothing Then
Application.EnableEvents = False
Target = Left(Target, Len(Target) - 2) & ":" & Right(Target, 2)
End If
Application.EnableEvents = True
End Sub

gruss hary
Anzeige
AW: Doppelklick und Change
15.08.2018 09:50:36
Hakan
Hallo Harry
vielen lieben Dank für Deine Hilfe. Dein VBA Code funktioniert. Sowohl der Doppelklick als auch die manuelle Eingabe. Allerdings bekomme ich einen Fehlermeldung wenn ich eingetragene Werte löschen möchte.
Wenn ich das Debuggen aufrufe, wird folgende Codezeile gelb markiert:
Target = Left(Target, Len(Target) - 2) & ":" & Right(Target, 2)
Herzliche Grüße
Hakan
AW: Datum per Doppelklick in vordefinierte Zellber.
15.08.2018 09:30:12
EtoPHG
Hallo,
Diesen Code in das entsprechende Tabellenblatt:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Const thisRange As String = "B1:D1000,E1:G100"              ' ggf. Ergänzen
Dim inHour As String, inMinute As String
If Not Intersect(Target, Range(thisRange)) Is Nothing Then
If Target.Count = 1 And Not IsEmpty(Target) Then
Application.EnableEvents = False
inHour = Left(Target, 2)
inMinute = Right(Target, 2)
If Val(inHour) >= 0 And Val(inHour) = 0 And Val(inMinute)  1 Then
Target = inHour & ":" & inMinute
Else
MsgBox "Not a valid time input", vbExclamation
End If
Application.EnableEvents = True
End If
End If
End Sub
Gruess Hansueli
Anzeige
AW: Datum per Doppelklick in vordefinierte Zellber.
15.08.2018 09:56:36
Hakan
Hallo Hansueli
Vielen lieben Dank auch Dir für Deine Hilfe. Dein Code ist was die manuelle Eingabe und die Definition der gewünschten Zellbereiche betrifft, genau das was ich suche. Einzig die Eingabe per Doppelklick in die vordefinierten Zellen fehlt noch. Wenn das noch möglich wäre, dann wäre es ein Traum... :-)
Herzliche Grüße
Hakan
AW: Datum per Doppelklick in vordefinierte Zellber.
15.08.2018 10:03:38
EtoPHG
Hallo Hakan,
WIE soll das mit dem Doppelklick funktionieren?
Soll da eine Inputbox aufpoppen, oder was?
Ein Doppelklick (wenn nicht als VBA Ereignis abgefangen) versetzt XL in den Zellbearbeitungsmodus und der Benutzer kann die Eingabe in das Bearbeitungsfeld machen. Was soll da der Vorteil einer zusätzlichen, den Anwender eher verwirrenden, Inputbox sein?
Grundsätzlich zweifle ich sowieso diese Zeit- und Datumseingaben ohne Trennzeichen an. Da wird Code geschaffen, der dem Benutzer marginale Vorteile, der Stabilität, Fehleranfälligkeit und dem Wartungsaufwand aber steigende Nachteile bringt.
Gruess Hansueli
Anzeige
AW: Datum per Doppelklick in vordefinierte Zellber.
15.08.2018 10:21:47
Hakan
Hallo Hansueli
Der Vorteil liegt darin, dass bei einer operativen Erfassung der Zeit ein jeweiliger Nutzer per Doppelklick auf erheblich optimierte Weise einen Zeitstempel setzen kann. Das rationalisiert den Workflow. Die manuelle Eingabe wird in solchen Fällen benötigt, wenn die Zeiten nachträglich eingetragen werden müssen, was ab und zu ebenfalls auftritt.
Herzliche Grüße
Hakan
Du antwortest nicht auf meine Fragen! (owT)
15.08.2018 10:23:56
EtoPHG

AW: Datum per Doppelklick in vordefinierte Zellber.
15.08.2018 10:28:28
Hakan
Übrigens der Code von Hary erzeugt den Zeitstempel per Doppelklick. Um eine konkrete Vorstellung von dem zu bekommen, was ich in meinem letzten Post beschrieben habe, macht es für Dich evtl. Sinn, Hary`s Code selber einmal auszutesten.
Herzliche Grüße
Hakan
Anzeige
AW: Datum per Doppelklick in vordefinierte Zellber.
15.08.2018 10:38:57
EtoPHG
Hallo Hakan,
Ich teste keine Codes von anderen, dafür sind diese selber zuständig. Aber allein aus dem Lesen kann ich dir sagen, dass z.B. die Eingabe von 6666 in Hary's Code Seltsames zu Tage fördern wird, v.a. wenn mit solchen Zellwerte per Formeln weitergerechnet wird.
Dann kopier halt meinen Code-Body ebenfalls in ein
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
' HIER Codebody aus _Change Ereignis
' + Diese Zeile nach Application.EnableEvents = True
Cancel = False
' REST Codebody
End Sub
Gruess Hansueli
Anzeige
AW: Datum per Doppelklick in vordefinierte Zellber.
15.08.2018 11:25:19
Hakan
Hallo Hansueli
Ich habe Verständnis dafür dass Du keinen Code von anderen Autoren testen möchtest. Es war nicht meine Absicht, dich hierzu zu drängen. Es hätte lediglich dazu dienen können, die von Dir geäußerten Zweifel über die Sinnhaftigkeit der Zeiteingabe per Doppelklick auszuräumen.
Ich denke ich habe die Vorteile hinlänglich beschrieben und mir bleibt in dem Fall nur, mich herzlich für Deine Hilfe zu bedanken. Du hast mir zweifelsohne schon sehr geholfen. Vielen, lieben Dank dafür.
Herzliche Grüße
Hakan
AW: Datum per Doppelklick in vordefinierte Zellber.
15.08.2018 11:29:17
Hakan

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
' HIER Codebody aus _Change Ereignis
' + Diese Zeile nach Application.EnableEvents = True
Cancel = False
' REST Codebody
End Sub
Hiermit kann ich mangels fortgeschrittener Kenntnis in VBA Coding leider fast gar nichts anfangen.
Dennoch vielen Dank :-)
Anzeige
AW: Datum per Doppelklick in vordefinierte Zellber.
15.08.2018 11:34:52
EtoPHG
Hallo Hakan,
Also weils du bist ;-)
Nochmals ALL-IN-ONE:
Option Explicit
Const thisRange As String = "B1:D1000,E1:G100"              ' ggf. Anpassen!
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim inHour As String, inMinute As String
If Not Intersect(Target, Range(thisRange)) Is Nothing Then
If Target.Count = 1 And Not IsEmpty(Target) Then
Application.EnableEvents = False
inHour = Left(Target, 2)
inMinute = Right(Target, 2)
If Val(inHour) >= 0 And Val(inHour) = 0 And Val(inMinute)  1 Then
Target = inHour & ":" & inMinute
Else
MsgBox "Not a valid time input", vbExclamation
End If
Application.EnableEvents = True
Cancel = True
End If
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim inHour As String, inMinute As String
If Not Intersect(Target, Range(thisRange)) Is Nothing Then
If Target.Count = 1 And Not IsEmpty(Target) Then
Application.EnableEvents = False
inHour = Left(Target, 2)
inMinute = Right(Target, 2)
If Val(inHour) >= 0 And Val(inHour) = 0 And Val(inMinute)  1 Then
Target = inHour & ":" & inMinute
Else
MsgBox "Not a valid time input", vbExclamation
End If
Application.EnableEvents = True
End If
End If
End Sub
Gruess Hansueli
Anzeige
AW: Datum per Doppelklick in vordefinierte Zellber.
15.08.2018 11:47:16
Hakan
Hallo Hansueli
Der erste Teile Deines Codes ist und bleibt der absolute Knaller, großartig! Sehr hochwertig und löst die gestellte Aufgabe. Der zweite Teil Deines Codes führt leider nicht zum gewünschten Ziel. Wie schon erwähnt, bin ich nahezu VBA Laie aber was ich erkennen kann, ist das Fehlen der Doppelklick Anweisung.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Herzliche Grüße
Hakan
AW: braucht nur Timestamp aber@Hansueli
15.08.2018 12:01:30
hary
Moin
beim Doppelklick soll doch nur ein Timestamp rein.
Frage an Hansueli: Bei Eingabe von zum Bsp. 600 (6 Uhr) laeuft das Change_Ereigniss in einen Fehler.
Jedenfalls bei mir.
Const thisRange As String = "B1:D1000,E1:G100"              ' ggf. Anpassen!
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range(thisRange)) Is Nothing Then
Cancel = True
Application.EnableEvents = False
Target = Format(Time, "hh:mm")
End If
Application.EnableEvents = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim inHour As String, inMinute As String
If Not Intersect(Target, Range(thisRange)) Is Nothing Then
If Target.Count = 1 And Not IsEmpty(Target) Then
Application.EnableEvents = False
inHour = Left(Target, 2)
inMinute = Right(Target, 2)
If Val(inHour) >= 0 And Val(inHour) = 0 And Val(inMinute)  1 Then
Target = inHour & ":" & inMinute
Else
MsgBox "Not a valid time input", vbExclamation
End If
Application.EnableEvents = True
End If
End If
End Sub

gruss hary
Anzeige
ach so. mein code verlangt 4Ziffern (owT)
15.08.2018 12:06:14
EtoPHG

AW: bei mir auch nicht mit...
15.08.2018 12:14:58
hary
Hallo Hansueli
... Eingabe von 0600 (als 6 Uhr)kommt die Msgbox.
Werd mal bei Zeiten deinen Codee durchgehen.
gruss hary
ach so. das hab ich nirgends so gelesen
15.08.2018 12:14:51
EtoPHG
Harry,
das mit dem Timestamp.
Aber du hast recht, auch mein Code ist Crap.
Also ich möchte nicht mehr an diesem Thema arbeiten.
Ich hab schon in der ersten Antwort erwähnt "Ich finde solche Handstände völlig daneben!"
Gruess Hansueli
AW: @Hansueli trotzdem lies mal
15.08.2018 12:39:42
hary
Moin Hansueli
Dein Code ist keine Crap
Der Fehler war/ist das durch druecken der Entertaste aus 0600 600 wird. Vorangestellte Null wird eliminiert.
Hab es so geloest:
inHour = Left(Target, Len(Target) - 2)

gruss hary
Anzeige
Da fehlt überhaupt nix!
15.08.2018 12:03:16
EtoPHG
Hallo,
Zitat: ... aber was ich erkennen kann, ist das Fehlen der Doppelklick Anweisung.
Was ist denn deiner Meinung nach eine Doppelklick Anweisung und wo findest du sie in Harry's Code?
Das sind Ereignis-Procedure die XL automatisch anstösst, wenn ein Doppelklick auf eine Zelle ausgeführt wird.
Ich weiss immer noch nicht, was du erwartest, wenn eine Zelle Doppel-geklickt wird.
Darum beende ich hier meine Mithilfe...
Gruess Hansueli
AW: Da fehlt überhaupt nix!
15.08.2018 12:45:09
Hakan
Hallo Hansueli
Nochmals vielen Dank für Deine Hilfe.
Wenn Du magst bzw. daran interessiert bist, lade ich Dir sobald ich eine Lösung gefunden habe, meine Excel Tabelle hoch, damit Du sehen kannst, was gemeint war.
Der Hary hat den benötigten Code schließlich schon weitestgehend zusammen. Der Zeitstempel per Doppelklick wird durch seinen Code sauber bewerkstelligt. Für mich ein deutlicher Beweis dafür, dass es funktioniert.
Den Sinn des Ganzen hatte ich ja bereits hinlänglich erklärt. Die Kunst liegt nun also darin, Hary`s Code zu ergänzen, sodass er beim Löschen der Werte keinen Fehler auswirft und schlussendlich aus Deinem sowie und Hary`s Code einen Code zu zaubern, der die gestellte Anforderung erfüllt.
Herzliche Grüße
Hakan
AW: Datum per Doppelklick in vordefinierte Zellber.
15.08.2018 12:25:13
Hakan
Hallo Hansueli
Sorry, sorry, sorry ich muss mich sehr entschuldigen bei Dir. Ich habe die Doppelklick Anweisung in Deinem Code leider komplett übersehen. Ich bitte um Verzeihung. Ich wollte Dich nicht konfus machen.
Mir ist allerdings beim herumprobieren mit Deinem Code etwas aufgefallen, das mich nun ein wenig verwirrt.
Dein ursprünglicher Code (der erste, den Du gepostet hattest) hat super funktioniert. Er entbehrt zwar den Zeitstempel per Doppelklick jedoch funktioniert die manuelle Zeiteingabe ohne Doppelpunkt perfekt.
In der aktuellen Version Deines Codes zeigt sich deutlich das Verständnisdefizit unseres bisher geführten Dialoges. Du hast mich missverstanden.
Der Zeitstempel per Doppelklick sollte nicht aus beispielsweise 1250 12:50 machen. Der Doppelklick soll den Zeitstempel auf direktem Weg erzeugen. Doppelklick und die aktuelle Zeit wird eingefügt.
Das manuelle Eintragen der Zeit sollte ohne das lästigen Eingeben des Doppelpunktes erfolgen. Dieser sollte durch den VBA Code hinzugefügt werden. Dein ursprünglicher Code bewerkstelligt genau dies.
Das sind zwei unterschiedliche Verfahrensweisen, die der Nutzer nach Bedarf in ein und derselben Zelle ausführen können soll.
Herzliche Grüße
Hakan
AW: Datum per Doppelklick in vordefinierte Zellber.
15.08.2018 12:33:36
hary
Moin
So geht es jetzt.
Const thisRange As String = "B1:D1000,E1:G100"              ' ggf. Anpassen!
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range(thisRange)) Is Nothing Then
Cancel = True
Application.EnableEvents = False
Target = Format(Time, "hh:mm")
End If
Application.EnableEvents = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim inHour As String, inMinute As String
If Not Intersect(Target, Range(thisRange)) Is Nothing Then
If Target.Count = 1 And Not IsEmpty(Target) Then
Application.EnableEvents = False
inHour = Left(Target, Len(Target) - 2)
inMinute = Right(Target, 2)
If Val(inHour) >= 0 And Val(inHour) = 0 And Val(inMinute)  1 Then
Target = inHour & ":" & inMinute
Else
MsgBox "Not a valid time input", vbExclamation
End If
Application.EnableEvents = True
End If
End If
End Sub

gruss hary
AW: Datum per Doppelklick in vordefinierte Zellber.
15.08.2018 12:54:14
Hakan
Hallo zusammen :-)))
Ich fasse es nicht. Der Tag hat nun wieder Struktur - Der Tag ist gerettet. Ihr seid Spitze. Tausend Dank. Ich kann es nicht glauben, obwohl ich`s hin und her probiert hab.
Ich verbeuge mich zutiefst.
Vielen herzlichen Dank an beide Herren.
Herzliche Grüße :-)
Hakan
AW: Datum per Doppelklick in vordefinierte Zellber.
15.08.2018 11:02:41
Hakan
Hallo Hansueli
Hast Du inzwischen den VBA-Code von Hary zwecks Veranschaulichung meiner Beschreibung ausprobiert?
Ich würde mich freuen zu erfahren, was Du darüber denkst.
Herzliche Grüße
Hakan
siehe Antwort von 10:38 ! (owT)
15.08.2018 11:05:06
10:38

AW: Datum per Doppelklick in vordefinierte Zellber.
18.08.2018 08:53:38
Hakan
Hallo Freunde
Ich bin`s nochmal mit einem allerletzten Hilfeanliegen zu diesem Thema. Irgendwie bekomme ich diesen VBA-Code nur bis Zelle E67 zum Laufen. Alle anderen Zellen wollen Debugt werden. Woran könnte dies liegen?
Habe eine Testfile hochgeladen.
https://1drv.ms/x/s!AkIOJGg6BtpQoWzJPCs5dCFctXgM
Herzliche Grüße
Hakan
Option Explicit
Const thisRange As String = "E8:E9,E12:E13,E16:E17,E20:E21,E27:E28,E31:E32,E35:E36,E39:E40,E46:E47,E50:E51,E54:E55,E58:E59,E66:E67," & _
"E70:E71,E74:E75,E78:E79,E85:E86,E89:E90,E93:E94,E97:E98,E104:E105,E108:E109,E112:E113,E116:E117,E124:E125,E128:E129,E132:E133," & _
"E136:E137,E143:E144,E147:E148,E151:E152,E155:E156,E162:E163,E166:E167,E170:E171,E174:E175,E182:E183,E186:E187,E190:E191,E194:E195," & _
"E201:E202,E205:E206,E209:E210,E213:E214,E220:E221,E224:E225,E228:E229,E232:E233,E240:E241,E244:E245"
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range(thisRange)) Is Nothing Then
Cancel = True
Application.EnableEvents = False
Target = Format(Time, "hh:mm")
End If
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim inHour As String, inMinute As String
If Not Intersect(Target, Range(thisRange)) Is Nothing Then
If Target.Count = 1 And Not IsEmpty(Target) Then
Application.EnableEvents = False
inHour = Left(Target, Len(Target) - 2)
inMinute = Right(Target, 2)
If Val(inHour) >= 0 And Val(inHour) = 0 And Val(inMinute)  1 Then
Target = inHour & ":" & inMinute
Else
MsgBox "Not a valid time input", vbExclamation
End If
Application.EnableEvents = True
End If
End If
End Sub

Testdatei und Code laufen auseinander
18.08.2018 12:21:47
EtoPHG
Hallo Hakan,
1. Aus deinem Textobject.xlsx ist in keiner Weise ersichtlich, was diese mit dem Problem der erlaubten Range zu tun hat!
2. Ein Range-Array kann max. 30 unabhängige Bereiche aufnehmen. (Mit Tricks (Union) etwas mehr.
3. Aus deinem Array ist kein eindeutiges Muster ableitbar. Das ist für eine generische Lösung essentiell. So wird am Anfang in 2er Gruppen Zellen ein-/ausgeschlossen. Diese Reihe bricht ab, da zwischen E25 und E27 nur noch E26 ausgelassen wird. Wieso ?
4. Beschreibe die Regel/n (z.B. 2er Gruppen von Zeilen der Spalte 5, angefangen bei Zeile 8 und endet Zeile n; oder: bei Zeile n oder in Spalte m muss stehen "x"...oder...) unter welcher/n der Doppelklick berücksichtigt werden soll!
Typischer Anfängerfehler: Man beschreibt Zeile 1..1000. Dann wird das Ganze über den Haufen geworfen, weil die kontunierliche Datenstruktur durch irgendwelche Formatierungs- bzw. Darstellungswünsche durchbrochen wird und plötzlich ist man am A..., bzw. back to square 1.
Gruess Hansueli
AW: Testdatei und Code laufen auseinander
18.08.2018 14:11:41
Hakan
Hallo Hansueli
Vielen Dank für Deine Antwort. Das mit der Begrenzung der Range-Arrays auf 30 unabhängige Bereiche hatte ich nicht gewusst. Ich kann aber durchaus den Sinn einer Begrenzung nachvollziehen.
Ich habe inzwischen auch schon eine Idee, wie ich mich mit der mit begrenzten Anzahl der Range-Arrays arrangieren kann. Ich danke Dir herzlich für die erleuchtenden Informationen. Ich wünsche Dir ein schönes Wochenende.
herzliche Grüße
Hakan

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige