Wenn-Dann-Sonst Funktion in Userform

  • #1
K

K!nG OhLe

Aktives Mitglied
Themenersteller
Dabei seit
16.05.2005
Beiträge
28
Reaktionspunkte
0
Ort
Laubsdorf
so da ich ja nun auch Zahlen eingeben kann möchte ich mein Userform noch erweitern :) und zwar möchte ich nun eine Prüfung reinbringen, die einem bei Texteingabe (zur Zeit können nur zahlen eingegeben werden) einen Hinweis bringt, dass man einen Text eingegeben hat. Desweiteren sind einige Eingaben in meinem Userform nicht zwingend erforderlich, sodass bei keiner Eingabe im Userform eine 0 als Eingabe erscheint....
Hoffe ihr könnt mir dabei helfen :)
 
  • #2
Helfen schon,doch um welches Programm gehts eigentlich. Das sollte man schon angeben.

Gruß
Kurt Körner
 
  • #3
bei mir geht es, wie in allen anderen threads auch um excel xp :> sry dass ich das vegessen hatte zu sagen...
 
  • #4
hi

also wenn ich das richtig verstanden habe, dann hast du ein eingabefeldchen und sobald dass man dort rausklickt oder wo anders hinklickt kommt ne Nachricht du hast soeben eine Eingabe im Feld xy gemacht.

falls dem so wäre, hätte ich einen kleinen Gedankensanstoss

Code:
Private Sub TextBox_AfterUpdate()
MsgBox after update & vbLf & Inhalt =  & TextBox1.Value
End Sub

anstatt TextBox nimmste dann einfach den Namen des Eingabefeldes

hoffe das hilft dir ^^

sonst musst du halt schreiben was du willst *hrhr*. Solangs keine Pommes sind kann ich versuchen dir zu helfen.

mfg billy
 
  • #5
also ich meinte das so, dass wenn man in einem Feld wo eine Zahleneingabe erforderlich ist einen Text eingibt, erhält man eine Fehlermeldung wo drinsteht Sie haben eine falsche Eingabe getätigt! Bitte geben Sie nur Zahlen ein und dann automatisch zum Eingabefeld gesprungen wird, welches den Fehler verursacht hat.

So nun habe ich aber auch noch Felder, wo man nichts ausfüllen kann und wenn man nichts eingibt, dann soll dieser Wert in der anschließenden Tabelle einfach 0 gesetzt werden.
 
  • #6
ich muss gleich etwas klar stellen dass ich kein profi bin ^^

also das erstere währe dann in etwa so:

Code:
Private Sub TextBox1_AfterUpdate()
If IsNumeric(TextBox1.Value) = False Then
MsgBox Sie haben eine falsche Eingabe getätigt! Bitte geben Sie nur Zahlen ein
End If
End Sub

jetzt öhm... abgesehn dass du das noch auf deinen Eingabefeldnamen ändern musst, hab ich ehrlichgesagt keine ahnung wie ich dann dieses Feld aktivieren kann :-[ aber wer anders kann dir schon sagen wie des geht.

dann öhm zum letzteren...

beim übertragen kannst du dann einfach ne kontrolle machen ob das Feld leer ist, wenn dem so ist kannst du einfach ein 0 machen.

also beispiel:

Code:
If TextBox1.Value =  Then
Cells(1,1).Value = 0
End If

nur mal die kleine Abfrage. Zur erklärung: wenn das Feld TextBox1 leer ist, wird eine 0 in die Zelle A1 geschrieben.

hoffe verstehst mich =)

mfg billy
 
  • #7
Hi K!nG OhLe ,

um gleich bei der Eingabe zu prüfen, könntest Du folgende  Konstruktion benutzen.

Gruß Matjes :)

Code:
Private Sub TextBox1_Change()
  Dim s_text As String, s As String, x As Long
  
  s_text = TextBox1.Value
 ->nicht leer ?
  If s_text <>  Then
   ->auf Ziffern prüfen
    For x = 1 To Len(s_text)
      s = Mid(s_text, x, 1)
      Select Case s
        Case 0 To 9
         ->:-) ist ok
        Case Else
          MsgBox (Du, du, du, nur Ziffern eingeben !!!)
         ->ingabetext auf gültigen Teil kürzen
         ->und ausgeben
          s_text = Left(s_text, x - 1)
          TextBox1.Value = s_text
      End Select
    Next
  End If
End Sub
 
  • #8
weisst du wie man ein eingabebox den zeiger stellen kann?

geht das überhaupt oder net?

ich habs mal mit SetFocus (irgend was mal genommen) versucht... geht net =(
 
  • #9
Hi billy,

das geht aber nur mit diesem Befehl
Code:
TextBox1.SetFocus
Natürlich muß die TextBox auch den Namen TextBox1 habne (in diesem Beispiel ) . Außerdem müssen die Eigenschaften enabled und visible =True sein.

Gruß Matjes :)
 
  • #10
Matjes schrieb:
Hi billy,

das geht aber nur mit diesem Befehl
Code:
TextBox1.SetFocus
Natürlich muß die TextBox auch den Namen TextBox1 habne (in diesem Beispiel ) . Außerdem müssen die Eigenschaften enabled und visible =True sein.

Gruß Matjes :)

danke ^^
 
  • #11
und wie stelle ich es nun noch an, dass wenn man in einem eingabefeld nichts eingibt, dass der die zelle 0 setzt? Billy17 sein vorschlag geht nit
 
  • #12
Hi K!nG OhLe,

Wie ist denn deine Konstruktion ?

Ändert deine Userform kontinuierlich die Zellen oder werden die Zellen erst nach betätigen eines Ok-Buttons ?

Für den Fall mit Ok-Button (heißt im Beispiel CommandButton1):
Code:
Private Sub CommandButton1_Click()
 Dim l_Wert As Long
 If TextBox1.Value =  Then
  l_Wert = 0
 Else
  l_Wert = TextBox1.Value
 End If
 
->Wert in Zelle ablegen
 Cells(1, 1).Value = l_Wert
 
->Userform entladen
 Unload UserForm1
 
End Sub

Gruß Matjes :)
 
  • #13
matjes kann glaub ich gedanken lesen :> *angsthab* vieln dank :)
 
  • #14
Eine Frage habe ich allerdings noch.... wie stelle ich es an, dass bei einem Klick auf OK der Text (als Zahl getarnt) in eine Zahl umgewandelt wird und geprüft wird ob überhaupt was in der TextBox steht.... Ich habe mal folgendes probiert, was allerdings nicht von Erfolg gekrönt war :(


Code:
Private Sub CommandButton2_Click()
Dim s_Wert As String
Dim d_Wert As Double

s_Wert = TextBox1.Text
d_Wert = s_Wert
 Dim l_Wert As Long
 If TextBox1.Value =  Then
  l_Wert = 0
 Else
  l_Wert = TextBox1.Value
 End If
  Cells(28, 3).Value = l_Wert
Cells(28, 3).Value = d_Wert
Unload Me
End Sub
 
  • #15
Hallo K!nG OhLe,

es ist schon ein Unterschied, ob eine Gleitkomma-Zahl oder eine Ganzzahl eingegeben werden soll. Ich habe dir für beide Fälle mal ein Beispiel zusammengestellt.

Gruß Matjes :)

Ganzzahl - Long (also ohne Komma):
Code:
Private Sub CommandButton1_Click()
  
  Dim l_Wert As Long->GanzZahl

  If TextBox1.Value =  Then
    l_Wert = 0
  Else
    l_Wert = TextBox1.Value
  End If
  Cells(28, 3).Value = l_Wert
  Unload Me

End Sub

Private Sub TextBox1_Change()
  Dim s_text As String, s As String, x As Long
  
  s_text = TextBox1.Value
 ->nicht leer ?
  If s_text <>  Then
   ->auf Ziffern prüfen -> Long-Wert, sprich Ganzzahl
    For x = 1 To Len(s_text)
      s = Mid(s_text, x, 1)
      Select Case s
        Case 0 To 9
         ->:-) ist ok
        Case Else
          MsgBox (Du, du, du, nur Ziffern eingeben !!!)
         ->ingabetext auf gültigen Teil kürzen
         ->und ausgeben
          s_text = Left(s_text, x - 1)
          TextBox1.Value = s_text
      End Select
    Next
  End If
End Sub
Gleitkommazahl - Double (also mit Komma):
Code:
Private Sub CommandButton1_Click()
  
  Dim d_Wert As Double->Gleitkommazahl

  If TextBox1.Value =  Then
    d_Wert = 0
  Else
    d_Wert = TextBox1.Value
  End If
  Cells(28, 3).Value = d_Wert
  Unload Me

End Sub

Private Sub TextBox1_Change()
  Dim s_text As String, s As String, x As Long, l_AnzKomma As Long
  
  s_text = TextBox1.Value
 ->nicht leer ?
  If s_text <>  Then
   ->auf Ziffern prüfen -> Long-Wert, sprich Ganzzahl
    l_AnzKomma = 0
    For x = 1 To Len(s_text)
      s = Mid(s_text, x, 1)
      Select Case s
        Case 0 To 9
         ->:-) ist ok
        Case ,
          If l_AnzKomma = 0 Then
            l_AnzKomma = l_AnzKomma + 1
          Else
            MsgBox (Du, du, du, Double verträgt keine zwei Kommas !!!)
           ->Eingabetext auf gültigen Teil kürzen und ausgeben
            s_text = Left(s_text, x - 1)
            TextBox1.Value = s_text
          End If
        Case Else
          MsgBox (Du, du, du, nur Ziffern eingeben !!!)
         ->Eingabetext auf gültigen Teil kürzen und ausgeben
          s_text = Left(s_text, x - 1)
          TextBox1.Value = s_text
      End Select
    Next
  End If
End Sub
 
  • #16
Hi gibt es eine Möglichkeit Kommentare in Userforms einzubinden? vielleicht so bei mouseover oder so?
 
  • #17
Hi K!nG OhLe,

ausgehend von der Userform mit einer Textbox1 und CommandButton1 könnte man das folgendermassen machen.

Setze auf die Userform ein Label1, vielleicht am unteren Rand über die gesamte Breite. Dann fügst Du für alle Elemente (Textbox1, CommandButton1, Userform1 ein MouseMove-Ereignis in der folgenden Weise hinzu.
Code:
Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
 Label1.Caption =  Textbox  Mouseover x: & X &  y: & Y
End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  Label1.Caption = Userform Mouseover x: & X &  y: & Y
End Sub
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  Label1.Caption = CommandButton Mouseover x: & X &  y: & Y
End Sub
Wenn du die Form startest, kannst Du jetzt im Label1 sehen, wo sich deine Maus befindet, also welches MouseMove-Ereignis wann eintritt. In Abhängigkeit dessen kannst Du statt der x/y-Koordinaten einen Informationstext ausgeben.

Gruß Matjes :)
 
  • #18
geht diese version auch ohne button? also das es gleich angezeigt wird ohne das ich nen button drücken muss?


außerdem wenn ich es nun so in mein vba editor eingebe, erhalte ich bei meinem userform, wenn ich mit der maus drüber gehe folgende fehlermeldung:

Laufzeitfehler blablabla...


und im vba editor wird folgende zeile markiert :

Label1.Caption = Userform Mouseover x: & X & y: & Y
 
  • #19
Hallo K!nG OhLe

siehe Posting oben:
Setze auf die Userform ein Label1, vielleicht am unteren Rand über die gesamte Breite.
Hast du das gemacht ? gibt es auf deiner Userform1 ein Label1 (sprich Bezeichnungsfeld , großes A aus der Werkzeugpalette) ?

Gruß Matjes :)

ps: schick mir mal eine mail an meinen Wintotal-Mail-Acount, dann schick ich dir das Beispiel .
 
  • #20
wie stelle ich das an, wenn ich mehrere textboxen haben? einfach mehrere labels erstellen?
 
Thema:

Wenn-Dann-Sonst Funktion in Userform

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben