Eingabeprüfung und do until schleife mit datum funktioniert nicht
Hi,
ich bin zwar in einer DV klasse hatte aber schon ca. ein Jahr nichtsmehr mit VBA zu tun und jetzt wo ichs wieder brauche bekomm ich die einfachsten Dinge nichtmehr hin... hab schon nach Beiträgen gesucht aber nichts gefunden hoffe jemand kann mir helfen...
Ich habe in excel eine Tabelle in die mit Hilfe von VBA gefüllt werden soll.
Das funktioniert auch alles soweit bis auf das erste Problem.
Ich habe eine User Form erstellt mit 6 Textfeldern.
Alle Werte werden als integer eingelesen aber wenn eine Spalte leer bleibt also 0 sein soll und diese 0 nicht eingetragen wird
strürtzt das Programm logischerweise ab, da das ja nicht als integer eingelesen werden kann.
So hier habe ich jetzt alle möglichen Eingabeprüfungen versucht
z.B. wenn Das Textfeld leer ist dann Wert = 0 funktioniert aber net...
also
if Txtwert.text = "" Then
Wert = 0
End if
Ich hab echt keine Ahnung mehr wie das geht habs auch schon in verschiedenen foren versucht aber des funktioniert alles net...
Mein nächstes Prob ist, dass in der ersten Tabellenspalte ein Datum steht.
So erst sollte das so sein das die nächste leere Spalte ausgewählt wird und in diese also immer der nächste tag dann die werte übergeben werden sollen.
Das habe ich so gemacht
Do Until ActiveCell.Value = ""
ActiveCell.Offset(1, 0).Select
Loop
Jetz gibt es aber das Problem das z.b. der 10.04.2009 ausgefüllt werden soll und nicht das datum von heute.
Also habe ich in die User form noch ein textfeld gemacht, in das das Datum eigetragen werden soll und die Schleife soweit durchläuft, bis das richtige Datum gefunden ist.
Ich habe dan einfach das Textfeld als date eingelesen.
Dim Datum as Date
und bei der Schleife einfach
Do Until ActiveCell.Value = Datum
ActiveCell.Offset(1, 0).Select
Loop
So da kam dann ne Endlosschleife bei raus :P
Ich habe das Datum dan auch in dem Format eingegeben, in dem es in der Tabelle steht
also 06.04.2009
Jetz weiß ich net ob ich das anderst in das Textfeld eingeben oder die Formatierung in der Tabellen ändern muss.
Hoffe mir kann jemand helfen
ich bin zwar in einer DV klasse hatte aber schon ca. ein Jahr nichtsmehr mit VBA zu tun und jetzt wo ichs wieder brauche bekomm ich die einfachsten Dinge nichtmehr hin... hab schon nach Beiträgen gesucht aber nichts gefunden hoffe jemand kann mir helfen...
Ich habe in excel eine Tabelle in die mit Hilfe von VBA gefüllt werden soll.
Das funktioniert auch alles soweit bis auf das erste Problem.
Ich habe eine User Form erstellt mit 6 Textfeldern.
Alle Werte werden als integer eingelesen aber wenn eine Spalte leer bleibt also 0 sein soll und diese 0 nicht eingetragen wird
strürtzt das Programm logischerweise ab, da das ja nicht als integer eingelesen werden kann.
So hier habe ich jetzt alle möglichen Eingabeprüfungen versucht
z.B. wenn Das Textfeld leer ist dann Wert = 0 funktioniert aber net...
also
if Txtwert.text = "" Then
Wert = 0
End if
Ich hab echt keine Ahnung mehr wie das geht habs auch schon in verschiedenen foren versucht aber des funktioniert alles net...
Mein nächstes Prob ist, dass in der ersten Tabellenspalte ein Datum steht.
So erst sollte das so sein das die nächste leere Spalte ausgewählt wird und in diese also immer der nächste tag dann die werte übergeben werden sollen.
Das habe ich so gemacht
Do Until ActiveCell.Value = ""
ActiveCell.Offset(1, 0).Select
Loop
Jetz gibt es aber das Problem das z.b. der 10.04.2009 ausgefüllt werden soll und nicht das datum von heute.
Also habe ich in die User form noch ein textfeld gemacht, in das das Datum eigetragen werden soll und die Schleife soweit durchläuft, bis das richtige Datum gefunden ist.
Ich habe dan einfach das Textfeld als date eingelesen.
Dim Datum as Date
und bei der Schleife einfach
Do Until ActiveCell.Value = Datum
ActiveCell.Offset(1, 0).Select
Loop
So da kam dann ne Endlosschleife bei raus :P
Ich habe das Datum dan auch in dem Format eingegeben, in dem es in der Tabelle steht
also 06.04.2009
Jetz weiß ich net ob ich das anderst in das Textfeld eingeben oder die Formatierung in der Tabellen ändern muss.
Hoffe mir kann jemand helfen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 113372
Url: https://administrator.de/contentid/113372
Ausgedruckt am: 22.11.2024 um 05:11 Uhr
5 Kommentare
Neuester Kommentar
HalloBischoff!
Und warum nicht
Abhängig davon, ob die Variable
Alternativ dazu (je nachdem, was Du noch alles vor hast) könntest Du auch gleich im "Then"-Zweig die restlichen Anweisungen platzieren.
Zusätzlich musst Du auch noch davon ausgehen, dass zwar ein gültiges Datum eingegeben wird, dieses aber nicht in Deiner Tabelle steht - dann wird natürlich
Soferne es keine "Löcher" zwischen den Einträgen gibt, kannst Du das so etwas absichern:
Grüße
bastla
Und warum nicht
If IsDate(txtDatum.text) Then
Datum = CDate(txtDatum.text)
Else
Datum = 0
End If
Datum
danach einen anderen Wert als 0 hat, kannst Du die weiteren Verarbeitungsschritte durchführen.Alternativ dazu (je nachdem, was Du noch alles vor hast) könntest Du auch gleich im "Then"-Zweig die restlichen Anweisungen platzieren.
Zusätzlich musst Du auch noch davon ausgehen, dass zwar ein gültiges Datum eingegeben wird, dieses aber nicht in Deiner Tabelle steht - dann wird natürlich
ActiveCell.Value
nie gleich Datum
sein ...Soferne es keine "Löcher" zwischen den Einträgen gibt, kannst Du das so etwas absichern:
V = ActiveCell.Value
Do Until V = Datum Or V = ""
ActiveCell.Offset(1, 0).Select
V = ActiveCell.Value
Loop
If V <> "" Then 'Zelle mit dem gesuchten Datum gefunden
...
bastla