Anzeige
Archiv - Navigation
1408to1412
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

Userform und Formatdarstellung

Userform und Formatdarstellung
11.02.2015 17:12:38
walter

Hallo zusammen.
ich habe mir eine Userform erstellt mit folgendem Makros
für die Textbox1:

Private Sub TextBox2_AfterUpdate()
If TextBox2.Value = "" Then
TextBox2.Value = "0000"
End If
ActiveSheet.Range("O2").Value = Format(TextBox2.Value, "0000")
TextBox2.Value = Format(ActiveSheet.Range("O2"), "0000")
TextBox2.SetFocus
With TextBox2
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End Sub
Die Zelle ist mit folgendem Format hinterlegt: Uhrzeit 13:30
Diese Format benötige ich weil dahinter Formeln bestehen.
Wenn in der Zelle O2= 08:00 steht, wird in der Textbox1 dies
angezeigt: 0,33333333333
Ich habe mal auf "00:00" leider wird weiter 0,33333 angezeigt.
Wenn in der Zelle O2= 06:00 steht, wird in der Textbox1 0,25 angezeigt.
Ich möchte gern in der Textbox 4 Stellig die Zeit reinschreiben, wenn
möglich.
gruß
walter

30
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform und Formatdarstellung
11.02.2015 17:25:15
Hajo_Zi
Hallo Walter.
=Range("A1").text

Leider wird das angezeigt
11.02.2015 18:35:06
walter
Guten Abend Hajo,
leider wird dies angezeigt 0,354166666666667
in Zelle steht 08:30
ActiveSheet.Range("O2").Text = TextBox2.Text
TextBox2.Text = ActiveSheet.Range("O2").Text
gruß
walter

Hier mein Muster
11.02.2015 18:46:28
walter
Hallo Hajo,
sende mal ein Muster.

Die Datei https://www.herber.de/bbs/user/95691.xls wurde aus Datenschutzgründen gelöscht


gruß
walter

AW: Hier mein Muster
11.02.2015 19:13:07
Hajo_Zi
bei mir wird 78:30 angezeigt, die Zuweisung zur Zelle habe ich übersprungen da Fehler.
Gruß Hajo

Anzeige
Hallo Hajo...
11.02.2015 19:35:40
walter
Hallo Hajo,
kannst Du Dir das nochmal ansehen, habe gerade
bei Christian geantwortet.
gruß
walter

AW: Hier mein Muster
11.02.2015 19:18:15
Christian
hallo Walter,
Bei Excel wird ein Tag (24 Stunden) als 1 gezählt.
06:00 Uhr ist daher 0,25, 08:00 Uhr 0,333, etc.
im "UserForm_Initialize" -Ereignis:
TextBox2 = ActiveSheet.Range("O2").Text
Da steht bei dir jetzt ".Range("O2").Value"
im "TextBox2_AfterUpdate" -Ereignis:
Private Sub TextBox2_AfterUpdate()
ActiveSheet.Range("O2").Value = TextBox2.Text
End Sub
Gruß
Christian

Ja aber es wird nicht geändert
11.02.2015 19:34:42
walter
Hallo Christian,
habe folgendes eingesetzt:
Private Sub UserForm_Initialize()
TextBox1 = ActiveSheet.Range("R3").Text
TextBox2 = ActiveSheet.Range("O2").Text
TextBox3 = ActiveSheet.Range("P2").Text
TextBox4 = ActiveSheet.Range("Q2").Text
TextBox5 = ActiveSheet.Range("R2").Text
TextBox6 = ActiveSheet.Range("S2").Text
TextBox7 = ActiveSheet.Range("T2").Text
es werden die Zeiten korrekt angezeigt.
Wenn ich aber ändern möchte wird eine Fehlermeldung angezeigt.
Fehler 1004 die Texteigenschaft kann nicht festgelegt werden.
UND hier bleibt das Makro stehen= ActiveSheet.Range("O2").Text = TextBox2
gruß
walter

Anzeige
AW: Ja aber es wird nicht geändert
11.02.2015 19:46:16
Luschi
Hallo Walter,
ich hoffe, daß Deine F1-Taste nicht klemmt. In der Vba-Hilfe steht das hier:
Range.Text-Eigenschaft (Excel)
Gibt den Text für das angegebene Objekt zurück oder legt diesen fest. Schreibgeschützter String-Wert.
D.h.: Man kann zwar die Text-Eigenschaft eines Range-Objektes auslesen!, aber nichts wieder reinschreiben.
Gruß von Luschi
aus klein-Paris

AW: Ja aber es wird nicht geändert
11.02.2015 19:50:30
Kurt k
Hallo Luschi,
gibt es den keinen Trick etc. um die Eingabe durchzuführen ?
Gruß
Walter

AW: Ja aber es wird nicht geändert
11.02.2015 20:15:24
Luschi
Hallo Walter,
das geht dann so:
ActiveSheet.Range("O2").Value = CDate(Me.TextBox1.Value)
Gruß von Luschi
aus klein-Paris

Anzeige
Das ist ja Super,dankeaber kann man noch..
11.02.2015 20:29:10
walter
Hallo Lusche,
super Idee DANKE !!!
Es klappt, kann man noch die Doppelpunkteingabe in die
Textbox sparen.
Wenn nicht ist halt auch egal, muß man mit leben...
gruß
walter

AW: Das ist ja Super,dankeaber kann man noch..
11.02.2015 20:45:55
Luschi
Hallo Walter,
zu dieser Verkürzung der Eingabe habe ich ein sehr gespaltenes Verhältnis.
Man sollte schon das eintippen, was man auch meint. Hier eine intelligente Vba-Lösung einzubauen ist doch 'seeehhhrrr' fehleranfällig!
Gruß von Luschi
aus klein-Paris

Danke für den Hinweis
11.02.2015 21:21:07
walter
Hallo Luschi,
danke für den Hinweis.
Schade...
gruß
walter

AW: Das ist ja Super,dankeaber kann man noch..
11.02.2015 20:59:27
Tino
Hallo,
versuch es mal so.
Lesen
TextBox2 = Format(ActiveSheet.Range("O2").Value, "hh:mm")
Schreiben
ActiveSheet.Range("O2").Value = CDate(TextBox2.Text)
Gruß Tino

Anzeige
Leider nicht....
11.02.2015 21:20:18
walter
Hallo Tino,
sehr schön das Du auch eine Idee hast aber leider klappt
es nicht.
Wenn ich 8:30 eingebe, dann übernimmt die Zelle den Wert.
Hätte mich gefreut wenn es ohne Eingabe vom Doppelpunkt
geklappt hätte.
gruß
walter

verstehe nicht...
11.02.2015 21:40:54
Tino
Hallo,
welches Format hat die Zelle jetzt bei dir?
Sollte nicht auf Text stehen.
Gruß Tino

Hallo Timo, bitte schau...
11.02.2015 21:57:58
Kurt k
Hallo Tino,
Bitte schau doch mal meine Musterdatei an.
Gruß Walter

habe ich doch
12.02.2015 04:46:52
Tino
Hallo,
mit meinem Vorschlag wir die Uhrzeit im Format hh:mm gelesen.
Beim schreiben wird aus dem Text durch cdate wieder eine Uhrzeit.
Gruß Tino

Anzeige
Guten Morgen Tino
12.02.2015 09:05:36
Kurt k
Guten Morgen Tino,
aber es klappt doch nicht, habe doch so eingesetzt wie Du
es beschrieben hattest.
Bitte probiere doch selbst mal bei meiner Musterdatei aus.
Danke im Voraus,
Gruß
walter

AW: Guten Morgen Tino
12.02.2015 09:49:48
Luschi
Hallo Walter,
ich habe Tinos 2 Befehle für Textbox2 & Zelle 'O2' genauso in der Musterdatei umgesetzt.
https://www.herber.de/bbs/user/95699.xls
Gruß von Luschi
aus klein-Paris
PS: k.A, was Du da falsch umsetzt!

Geil ich habs !!! DANKE an ALLE -)
12.02.2015 10:30:23
walter
Guten Morgen ALLE zusammen,
ich hab die Lösung zurecht gefummelt !
ActiveSheet.Range("O2").Value = Format(CDate(TextBox2.Text), "00:00") 'schreiben
TextBox2 = Format(ActiveSheet.Range("O2").Value, "hh:mm") 'lesen
So kann ich ohne Doppelpunkt eingeben !!!
Anschließen wird in der Textbox auch mit Doppelpunkt angezeigt !
Gruß
walter

Anzeige
sehr gewagt Text in Zelle zu schreiben.
12.02.2015 14:53:43
Tino
Hallo,
mit Format erzeugst du einen Text!
Nach meiner Meinung sehr gewagt Text in die Zelle zu schreiben.
Gruß Tino

Hallo Tino, aber es klappt ! (bisher) -)
12.02.2015 16:24:33
walter

dann schau mal die unzähligen Beiträge
12.02.2015 17:30:07
Tino
Hallo,
wo es darum geht warum der Zellwert nur noch Text enthält u. keine echte Zahl o. Datum.
Gruß Tino

Text als Zeit
12.02.2015 17:57:19
Erich G.
Hi Tino und Walter,
das sehe genau so wie du, Tino! In der Zeile
ActiveSheet.Range("O2").Value = Format(CDate(TextBox2.Text), "00:00")
ist die Umwandlung in Text überflüssig und eher schädlich. Besser wäre
ActiveSheet.Range("O2").Value = CDate(TextBox2.Text)
In welchem Format O2 den Wert anzeigen soll, ist Sache des Zahlenformats der Zelle und hat mit dem
in VBA ermittelten Wert nichts zu tun.
Dummerweise schadet das "Format()" dann nicht, wenn die Zielzelle O2 ein Uhrzeitformat hat.
Dann wird der Text Format(CDate(TextBox2.Text), "00:00") beim Schreiben in die Zelle automatisch
in eine Zahl (eine Uhrzeit) umgewandelt.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
Text als Zeit - Zusatz
12.02.2015 18:15:10
Erich G.
Hi,
die Zuweisung
Range("O2").Value = "5:25"
schreibt nur dann den 4-Zeichen-Text in die Zelle, wenn die Zelle Textformat hat.
Ansonsten - auch bei Format "Standard" wird der Text in eine Uhrzeit umgewandelt.
Das Zellenformat wird angepasst - so wie es ja auch bei der manuellen Eingabe von Uhrzeiten geschieht.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

wir kennen doch die Beiträge...
12.02.2015 18:20:12
Tino
Hallo,
wo drin steht
"hat immer funktioniert, heute geht's auf einmal nicht mehr?!"
Gruß Tino

Das habe ich eingesetzt, was mach ich Falsch ?
12.02.2015 09:41:26
walter
Guten Morgen,
das habe ich eingesetzt.
Private Sub TextBox2_AfterUpdate()
TextBox2 = Format(ActiveSheet.Range("O2").Value, "hh:mm")           'lesen
ActiveSheet.Range("O2").Value = CDate(TextBox2.Text)                'schreiben
TextBox2.SetFocus
With TextBox2
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End Sub
Ich gebe 0930 ein, leider wird aber noch die alte Zeit angezeigt: 08:30
also auch mit Doppelpuinkt.
Was habe ich FALSCH gemacht ?
gruß
walter

Anzeige
Logik
12.02.2015 10:13:09
Erich G.
Hi Walter,
"TextBox2_AfterUpdate" läuft nach deiner Eingabe in TextBox2.
Nehmen wir mal an, in O2 steht die Uhrzeit 8:30 und du gibst in TextBox2 0930 ein.
Dann läuft "TextBox2_AfterUpdate" los. Mit der 1. Anweisung
TextBox2 = Format(ActiveSheet.Range("O2").Value, "hh:mm") 'lesen
wird TextBox2 mit dem Wert aus O2 belegt - und der von dir eingegebene Wert dabei überschrieben.
Überleg dir mal, zu welchen Zeitpunkten die Textboxen mit Daten aus dem Tabellenblatt versorgt werden sollen.
Noch eine Frage:
Soll das so werden, dass man in so eine Textbox einen Zahlenwert wie z. B. 450 eingibt,
aber immer Uhrzeiten (4:50 oder der Wert aus der Tabelle) mit Doppelpunkten angezeigt werden?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
Hallo Erich, habe die Lösung siehe 10:15 -)
12.02.2015 11:32:04
walter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige