Zeit mit eingegebener Variable vergleiche und Msgbox ausgeben?

schranzbaer

Grünschnabel
Hallo Leutz,

ich tüffle und suche schon seit stunden nach einer lösung für mein beginnerproblem.

Und zwar habe ich folgendes Programm:

Dim a As String
Dim b As String

Private Sub Command1_Click()
Timer1.Enabled = True
End Sub

Private Sub Command2_Click()
Timer1.Enabled = False
End Sub

Private Sub Command3_Click()
a = 0
Text1.Text = "0"
Timer1.Enabled = False
End Sub

Private Sub Form_Load()
a = 0
Timer1.Enabled = True
End Sub

Private Sub Text2_Change()

End Sub

Private Sub Timer1_Timer()
a = a + 1
Text1.Text = a
End Sub


Und möchte nun die Variable a und b mit einander vergleichen und wenn sie gleich sind soll eine msgbox ausgegeben werden.

Da ich aber noch am Anfang stehe mit VB, brauchte ich hilfe.

mfg
 
Hi Schranzbaer,

also erst mal kann ich überhaubt nicht erkennen, was mit der Variablen "b" geschieht. Du werkelst zwar frisch, fromm, fröhlich und frei mit der Variablen "a" rum, aber mit "b" passiert nix. Das bedeutet, dass die beiden Variablen nur solange gleich sind, bis Du die erste Operation mit "a" vorgenommen hast. Ab diesem Zeitpunkt wirst Du nie mehr eine Gleichheit feststellen können.

Gleichheit prüfst Du btw mit If a = b Then.

Vielleicht beschreibst Du einfach mal, was Du mit dem Programm eigentlich erreichen willst. Dann könnte die Hilfe sicherlich besser ausfallen.

Desweiteren würde ich Dir empfehlen, etwas auf den Variablentyp zu achten. "a" und "b" sind vom Typ String. Zwar erledigt VB einiges für Dich, so dass die Anweisung a = a + 1 in Deinem Fall funktioniert; aber ist nicht ganz sauber.

Gruß
Das Orakel
 
@Orakel

allso das ursprüngliche prog, hab ich von einer scoure page, und wollte für meine fälle etwas herum basteln.

Also was ich bezwecken möchte: Ich möchte in das Textfeld 2 eine Zahl eingeben z.B 15 die dann also Variable b gilt. Wenn ich dann auf mein startbutton klicke läuft läuft die Variable a im sek. Takt hoch und wenn sie den wert von b erreicht hat. soll eine Msgbox aufgehen mit einer Meldung.

aber ich schaf es einfach nich weil ich nich weis wo und wie die die operationen z.B if a=b than Msgbox auf. eintragen soll. is vielleicht für einen frischling zu schwer.

mfg
 
habe es mit etwas hirnschmalz und 2 Tassen Kaffee geschaft. aber habe noch 2 kleine probleme und zwar die Zeit läuft sofort los nach dem laden des Progs. Und dachdem die Msgbox bestätigt wurde läuft sie auch weiter.

Wie kann ich die probleme beheben? danke schonmal im vorraus.

Hier mein scourecode:


Dim a, b As String

Private Sub Command1_Click()
Timer1.Enabled = True
End Sub

Private Sub Command2_Click()
Timer1.Enabled = False
End Sub

Private Sub Command3_Click()
a = 0
Text1.Text = "0"
Timer1.Enabled = False
End Sub

Private Sub Form_Load()
a = 0
Timer1.Enabled = True
End Sub

Private Sub Text1_Change()
If a = b Then MsgBox ("fertig")
End Sub

Private Sub Text2_Change()
b = Text2
End Sub

Private Sub Timer1_Timer()
a = a + 1
Text1.Text = a
End Sub
 
Hi Schranzbaer,

Zu Problem 1: Ändere mal dein Form_Load. Hier aktivierst Du ja explizit den Timer.
Code:
Private Sub Form_Load()
    a = 0
End Sub

Zu Problem 2: Warum packst Du nicht alles in das Timer Event
Code:
Private Sub Timer1_Timer()
    a = a + 1
    Text1.Text = a
    If a = Text2.Text Then
        Timer1.Enabled = False
        MsgBox "Fertsch"
    End If
End Sub

Gruß
Das Orakel
 
@ Orakel

Danke für die Antwort und es hat funtioniert.

So nun hab ich nur noch eine Frage für die ich nich noch ein neues Thema eröffnen will.

Und zwar wie kann ich die anzeige im Text1 und text2 so formatieren das ein Uhrzeitformat rauskommt.

Ich habe gestern so 3h im netz und im forum geschnuffelt und bin auf den befehl format(now,"00:00:00") gekommen. is das der richtige Weg.

Dann habe ich noch eine allgemeine frage zu VB undzwar nach welchen regeln gestaltet nich die sache wo ich die Befehle eintragen muss. Ob in Form_load oder Timer1_Timer ...

Danke schonmal im vorraus.
 
Hi Schranzbaer

schranzbaer hat gesagt.:
Ich habe gestern so 3h im netz und im forum geschnuffelt und bin auf den befehl format(now,"00:00:00") gekommen. is das der richtige Weg.
Tja jetzt kommt die berühmte "Radio Eriwan" antwort: Im Prinzip ja, aber......
Also Dein Problem ist, dass Du ja nur Zahlen addierst. Und aus reinen Zahlen bekommst Du keine Uhrzeit angezeigt. Also ich würde es wie folgt lösen:
Code:
Option Explicit

Dim nCounter                    As Integer
Dim tUhrzeit                    As Date

Private Sub Command1_Click()
    With Command1
        If .Tag = "X" Then
            .Tag = ""
            Timer1.Enabled = False
            .Caption = "Timer starten"
        Else
            .Tag = "X"
            nCounter = 0
            tUhrzeit = Now()
            Timer1.Enabled = True
            .Caption = "Timer anhalten"
        End If
    End With
End Sub

Private Sub Timer1_Timer()
    nCounter = nCounter + 1
    If nCounter = CInt(Text2.Text) Then
        Timer1.Enabled = False
        Command1.Caption = "Timer starten"
        MsgBox "Finished"
    End If
    tUhrzeit = tUhrzeit + (1 / 24 / 60 / 60)
    Text1.Text = Format$(tUhrzeit, "DD.MM.YYYY HH:MM:SS")
End Sub
Für das Beispiel brauchst Du eine Form mit zwei Textboxen (Text1 und Text2) In Text2 steht die Anzahl Sekunden, die vergehen sollen; einen Command Button (Command1), einen Timer (Timer1)

schranzbaer hat gesagt.:
Dann habe ich noch eine allgemeine frage zu VB undzwar nach welchen regeln gestaltet nich die sache wo ich die Befehle eintragen muss. Ob in Form_load oder Timer1_Timer ...
Boa, die Frage ist nicht so einfach zu beantworten. Es gibt meiner Meinung nach kein standard Rezept, nach dem man ein Programm schreibt. Je nachdem, was Du erreichen willst, musst Du Dir schon überlegen, in welchem Ereigniss Du welchen Code packst.

Gruß
Das Orakel
 
Erstmal danke orakel für deine hilfe bekomme langsam ein Verständnis für die Sprache.

Hab mit deinem code gearbeitet und habs langsam wie es mit dem Uhrzeitformat funtz.

Hier mein neuer Code:

Code:
Option Explicit

Dim nCounter                    As Integer
Dim tUhrzeit                    As Date
Dim tcount                      As Date


Private Sub Command1_Click()
    With Command1
        If .Tag = "X" Then
            .Tag = ""
            Timer1.Enabled = False
            .Caption = "Timer starten"
        Else
            .Tag = "X"
            nCounter = 0
            Timer1.Enabled = True
            .Caption = "Timer anhalten"
        End If
    End With
End Sub

Private Sub Form_Load()
Timer1.Enabled = False
End Sub

Private Sub Text2_Change()
Text2.Text = Format$(tcount, "HH:MM:SS")
tcount = tcount + (1 / 24 / 60 / 60)
End Sub

Private Sub Timer1_Timer()
    nCounter = nCounter + 1
    
    If Text1.Text = Text2.Text Then
    Timer1.Enabled = False
    MsgBox ("fertsch")
    End If
    
    Text1.Text = nCounter
    tUhrzeit = tUhrzeit + (1 / 24 / 60 / 60)
    Text1.Text = Format$(tUhrzeit, "HH:MM:SS")
    
         
    End Sub

Prob.1

Ich habe jetzt folgendes prob und zwar kann ich im zweiten textfeld nur vin 00:00:00 beginnend anfangen meine zeit einzugeben. Wenn ich zb auf 1 drück dann geht die ganze schote in einser schritten nach oben und wenn ich 9 drück dann halt mit 9er schritten.

Prob.2

Wenn die zwei Zeiten gleich sind kommt meine msgbox alles chillig aber nach dem bestädigen der box zählt der Timer immernoch 1s hoch und bleibt dann stehen.

Prob. 3

Ich bekomme es nich hin das meine timeranzeige (text1) nach dem starten mit auf 00:00:00 steht, sondern es steht erst auf 00 und nach den starten des timer.

thx im vorraus
 
Zurück