Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
684to688
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
684to688
684to688
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

if else problem

if else problem
21.10.2005 19:05:37
Bernd
hallo excelgemeinde,
zu aller erst: VBA gut nur weil VBA Kentnisse nicht zur verfügung steht.
ich habe mir eine userform gebastelt.
die userform beinhaltet folgenden code:


      
Private Sub Berechnen()
    
Dim Eingabe As Double
    
If TextBox5 <> "" Then
        Eingabe = TextBox5
        
If IsNumeric(TextBox1) Then
            
If TextBox1 <> "" Then
                Eingabe = Eingabe - TextBox1
            
End If
        
Else
            MsgBox "Keine Zahl"
        
End If
        
If IsNumeric(TextBox2) Then
            
If TextBox2 <> "" Then
                Eingabe = Eingabe - TextBox2
            
End If
        
Else
            MsgBox "Keine Zahl"
        
End If
        
If IsNumeric(TextBox3) Then
            
If TextBox3 <> "" Then
                Eingabe = Eingabe - TextBox3
            
End If
        
Else
            MsgBox "Keine Zahl"
        
End If
        
If IsNumeric(TextBox4) Then
            
If TextBox4 <> "" Then
                Eingabe = Eingabe - TextBox4
            
End If
        
Else
            MsgBox "Keine Zahl"
        
End If
        TextBox6 = Format(Eingabe, "#,##0.00 \'80")
    
End If
End Sub
Private Sub UserForm_Initialize()
    TextBox5 = Format(Sheets("tabelle1").Range("A1"), "#,##0.00 \'80")
    TextBox1 = 0
    TextBox2 = 0
    TextBox3 = 0
    TextBox4 = 0
End Sub
 


nun passiert beim öffnen der UF, dass ersteinmal 5x die msgbox "Keine Zahl"
aufgeht, bevor die UF aufgeht.
kann mir da einer sagen warum?
und kann mann den code evtl. kürzen?
gruss aus dem schönen Hamburg
Bernd
Rückmeldung wäre nett

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: if else problem
22.10.2005 00:04:41
Franz
Hallo Bernd,
der Inhalt einer Textbox in einem Userform ist normalerweise Text (String). Zumindest bei EXCEL97. Ich weiß nicht, ob man bei neueren EXCEL-Versionen den Textfeldern auch ein anderes Format zuweisen kann.
Dadurch ergeben deine If Isnumeric(...) ggf. als Ergebnis immer False und die Meldung "Keine Zahl " wird angezeigt. Du muß in Deinem Code die Eingabe immer erst in eine Zahl umwandeln. Da Du die Variable als Double deklariert hast, sollte auch die Eingabe in Double umgewandelt werden. Ich habe den Code einmal entsprechend angepaßt. Die Funktion CDbl(Ausdruck) erzeugt einen Fehler wenn der Ausdruck leer ist oder Text enthält. Dies kann man ausnutzen und auf die If Isnumeric-Abfragen verzichten. Durch die On Error Anweisung verzweigt das Programm bei einem Eingabefehler zur Fehlerbehandlungsroutine, die Meldung wird angezeigt und die Variable "Eingabefehler" wird auf True gesetzt. Diese Variable ist als Public deklariert und kann jetzt weiter verwendet werden, um die Eingabe zu wiederholen. Ich habe sie benutzt, um zu verhindern, dass das Userform ausgeblendet wird, wenn die Berechnung mi einem Eingabefehler gestartet wird.
Public Eingabefehler As Boolean
Private Sub CommandButton1_Click() ' Berechnen Button
Call Berechnen
If Eingabefehler Then Exit Sub
UserForm1.Hide
End Sub
Private Sub Berechnen()
Eingabefehler = False
Dim Eingabe As Double
On Error GoTo Fehlerbehandlung 'reagiert, wenn Text oder nichts in Textbox
Eingabe = CDbl(TextBox5)
Eingabe = Eingabe - CDbl(TextBox1)
Eingabe = Eingabe - CDbl(TextBox2)
Eingabe = Eingabe - CDbl(TextBox3)
Eingabe = Eingabe - CDbl(TextBox4)
TextBox6 = Format(Eingabe, "#,##0.00") 'zum Testen angepaßt
Exit Sub
Fehlerbehandlung:
MsgBox "Keine Zahl oder Eingabefeld leer, Eingabe korrigieren"
Eingabefehler = True
End Sub
Private Sub UserForm_Initialize()
TextBox5 = Format(Sheets("tabelle1").Range("A1"), "#,##0.00") 'zum Testen angepaßt
TextBox1 = 0
TextBox2 = 0
TextBox3 = 0
TextBox4 = 0
End Sub

evtl. kommst Du mit meinen Anpassungen weiter
Gruß
Franz
Anzeige
AW: if else problem
22.10.2005 08:19:36
Bernd
hallo nochmal,
danke franz, aber das funzt auch nicht.
beim öffnen der UF bekomme ich zuerst 3x die Fehlerbehandlung und dann erst geht die UF auf.
hat da noch jemand eine idee?
gruss aus dem schönen Hamburg
Bernd
Rückmeldung wäre nett
Auf des Makros...
22.10.2005 09:21:49
Ramses
Hallo
Nach deiner Beschreibung KANN das nicht der einzige Code sein.
Deiner Beschreibung und Fehlermeldung nach wird sicher ein Textbox-Ereignis ausgelöst

Private Sub UserForm_Initialize()
TextBox5 = Format(Sheets("tabelle1").Range("A1"), "#,##0.00") 'zum Testen angepaßt
TextBox1 = 0
TextBox2 = 0
TextBox3 = 0
TextBox4 = 0
End Sub

Schau mal bitte nach, ob ein einer Textbox ein "Change", "Click" oder "Exit"-EReignis existiert.
Etwas anderes kommt als Fehler nicht in Frage, weil die besagte Sub einem Commandbutton zugeordnet ist, der nicht automatisch ausgelöst wird.
Gruss Rainer
Anzeige
AW: if else problem
22.10.2005 09:28:16
Hajo_Zi
Hallo Bernd,
hätte man da nicht eine Datei hochladen sollen. Ich habe versucht nach Deinem Code das nachzubauen, aber der Steigt in Eingabe = TextBox5 aus was eigentlich auch klar ist nach der Zeile TextBox5 = Format(Sheets("tabelle1").Range("A1"), "#,##0.00 \'80")
das ergibt keinen numerischen Wert!
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP2.


AW: if else problem
22.10.2005 12:32:41
Bernd
hallo nochmal,
hier die datei:
https://www.herber.de/bbs/user/27715.xls
lieben dank für die hilfe
gruss aus dem schönen Hamburg
Bernd
Rückmeldung wäre nett
Anzeige
AW: if else problem
22.10.2005 12:57:59
Hajo_Zi
Hallo Bernd,
mnan sollte schon den kompletten Code posten. Du kannst mir auch nicht sagen wo hier die nächste Gasstätte ist, wenn ich nicht sage wo ich zur Zeit bin.

Option Explicit
Private Sub CommandButton1_Click()
If TextBox6 < 0 Then
MsgBox "Es ist ein Minusbetrag enstanden." _
& vbCrLf & "" _
& vbCrLf & "Bitte prüfen sie die Eingaben!"
Else
MsgBox "Nachfolgender Code"
'With Worksheets("tabelle1")
'        .Cells(3, 1).Value = CDbl(TextBox1)
'        .Cells(3, 2).Value = CDbl(TextBox2)
'        .Cells(3, 3).Value = CDbl(TextBox3)
'        .Cells(3, 4).Value = CDbl(TextBox4)
'End With
End If
End Sub
Private Sub TextBox1_Change()
If Me.Tag = "" Then Berechnen
End Sub
Private Sub TextBox2_Change()
If Me.Tag = "" Then Berechnen
End Sub
Private Sub TextBox3_Change()
If Me.Tag = "" Then Berechnen
End Sub
Private Sub TextBox4_Change()
If Me.Tag = "" Then Berechnen
End Sub
Private Sub Berechnen()
Dim Eingabe As Double
If TextBox5 <> "" Then
Eingabe = TextBox5
If IsNumeric(TextBox1) Then
If TextBox1 <> "" Then
Eingabe = Eingabe - TextBox1
End If
Else
MsgBox "Keine Zahl"
End If
If IsNumeric(TextBox2) Then
If TextBox2 <> "" Then
Eingabe = Eingabe - TextBox2
End If
Else
MsgBox "Keine Zahl"
End If
If IsNumeric(TextBox3) Then
If TextBox3 <> "" Then
Eingabe = Eingabe - TextBox3
End If
Else
MsgBox "Keine Zahl"
End If
If IsNumeric(TextBox4) Then
If TextBox4 <> "" Then
Eingabe = Eingabe - TextBox4
End If
Else
MsgBox "Keine Zahl"
End If
TextBox6 = Format(Eingabe, "#,##0.00 €")
End If
End Sub
Private Sub UserForm_Initialize()
Me.Tag = 1
TextBox5 = Format(Sheets("tabelle1").Range("A1"), "#,##0.00 €")
TextBox1 = 1
TextBox1 = ""
Me.Tag = ""
End Sub

Den Fehler den ich im ersten Beitrag angesprochen habe, habe ich nicht beseitigt.
Gruß Hajo

"Wer Rechtschreibfehler findet, darf sie behalten!"
Anzeige
AW: if else problem
22.10.2005 13:05:00
Bernd
hi hajo,
danke für deine hilfe.
werde in zukunft dran denken, mehr code zu posten wenn nötig. :-)
schönes wochenende noch.
gruss aus dem schönen Hamburg
Bernd
Rückmeldung wäre nett
AW: if else problem
22.10.2005 14:13:45
Franz
Hallo Bernd,
hier mein Vorschlag zum Userform, insbesondere auch zur Einkürzung des Codes.
Statt die Textboxen auf das Change-Ereignis hin die Berechnung (und damit auch die Prüfung auf den Inhalt) starten zu lassen, habe ich das EXIT-Ereignis eingesetzt. Die Inhalte der Textboxen 1 bis 4 müssen auf 0 oder andere nummerische Werte initialisiert werden, damit die Berechnungs-Routine beim Öffnen des Formulars nicht dauernd die Eingabefehlermeldung ausspuckt.

Option Explicit
Private Sub CommandButton1_Click()
If TextBox6 < 0 Then
MsgBox "Es ist ein Minusbetrag enstanden." _
& vbCrLf & "" _
& vbCrLf & "Bitte prüfen sie die Eingaben!"
Else
MsgBox "Nachfolgender Code"
'With Worksheets("tabelle1")
'        .Cells(3, 1).Value = CDbl(TextBox1)
'        .Cells(3, 2).Value = CDbl(TextBox2)
'        .Cells(3, 3).Value = CDbl(TextBox3)
'        .Cells(3, 4).Value = CDbl(TextBox4)
End With
End If
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Berechnen
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Berechnen
End Sub
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Berechnen
End Sub
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Berechnen
End Sub
Private Sub Berechnen()
Dim Eingabe As Double
If TextBox5 <> "" Then
Eingabe = CDbl(Left(TextBox5, Len(TextBox5) - 2)) ' €-Zeichen wird entfernt
On Error GoTo Fehlerbehandlung
Eingabe = Eingabe - CDbl(TextBox1) - CDbl(TextBox2) - CDbl(TextBox3) - CDbl(TextBox4)
TextBox6 = Format(Eingabe, "#,##0.00 €")
End If
Exit Sub
Fehlerbehandlung:
MsgBox "Keine Zahl"
End Sub
Private Sub UserForm_Initialize()
TextBox5 = Format(Sheets("tabelle1").Range("A1"), "#,##0.00 €")
TextBox1 = 0
TextBox2 = 0
TextBox3 = 0
TextBox4 = 0
End Sub
Gruß
Franz
Anzeige
AW: if else problem
22.10.2005 15:00:09
Bernd
hallo und danke an allen,
habe es jetzt so gelöst:
https://www.herber.de/bbs/user/27717.xls
wenn ihr nochmal draufschaut. wäre lieb
gruss aus dem schönen Hamburg
Bernd
Rückmeldung wäre nett

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige