bischoff
Goto Top

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

Content-Key: 113372

Url: https://administrator.de/contentid/113372

Ausgedruckt am: 28.03.2024 um 11:03 Uhr

Mitglied: SvenGuenter
SvenGuenter 07.04.2009 um 11:00:34 Uhr
Goto Top
Ohne getestet zu haben schaue dir mal folgende Funktionen an
if Isempty(Textfeldvonform) then

Datumsprüfung
If isdate(acticecell(reihe,spalte) ) then reihe +1:activecell.(reihe,spalte)

Datumproblem ( Konvertieren)
Cdate(datumsgfeld)


Gruß

Sven
Mitglied: bastla
bastla 07.04.2009 um 11:45:48 Uhr
Goto Top
... und noch als Ergänzung der Hinweis auf die Funktion IsNumeric() ...

Grüße
bastla
Mitglied: Bischoff
Bischoff 08.04.2009 um 11:07:55 Uhr
Goto Top
Also irgendwie funktioniert des alles nich...ich brauch ja blos die datumsformatierung...

also hab ich einfach gemacht:

dim Datum as Date
Datum = txtDatum.text

und dann in der Schleife

Do Until ActiveCell.Value = Datum (Vorher stand hier "" und das hat funktioniert...)also liegts am datum
ActiveCell.Offset(1, 0).Select
Loop

so das führt zu ner endlosschleife..

des mit der eingabeprüfung funktioniert auch net ..
mal schaun ob einer aus meiner klasse noch so altes zeugs hat^^

aber danke für die Hilfe
Mitglied: bastla
bastla 08.04.2009 um 11:34:40 Uhr
Goto Top
HalloBischoff!

Und warum nicht
If IsDate(txtDatum.text) Then
    Datum = CDate(txtDatum.text)
Else
    Datum = 0
End If
Abhängig davon, ob die Variable 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  
    ...
Grüße
bastla
Mitglied: Bischoff
Bischoff 08.04.2009 um 12:23:58 Uhr
Goto Top
So funktionierts...
die restlichen eingabeprüfungen hab ich jetz auch hinbekommen läuft akkes problem los


Danke für die Tips

Gruß Bischoff