Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
364to368
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
364to368
364to368
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VB-Makro läuft nicht sauber...

VB-Makro läuft nicht sauber...
18.01.2004 11:09:19
Walter
Guten Morgen,
fummel jetzt schon seit gestern aben(NACHT) rum, leider ohne Erfolg.
Mein Textbox10 soll eine Warnung ausgeben, wenn Text reingeschrieben wird. (machts Sie auch)
Wenn ich mit der TAB Taste die Textboxen beim 1. mal durchlaufe keine Veränderung auch kein Format, beim 2.mal wird die Textbox mit dem Zahlenformat formatiert und die MSGBOX Warnung wird aufgerufen, ich kann dann die Userform nicht beenden. Gebe ich eine 1 rein, geht es weiter.
Hier mein Makro:

Private Sub TextBox10_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Sub TextBox3_Change()
If IsNumeric(TextBox10) = False And TextBox10 <> "" Then
MsgBox "Es sind nur nummerische Werte erlaubt."
'auch getestet:    'If IsNumeric(TextBox10) = False Then
'MsgBox "Es sind nur Zahlen erlaubt !!!"
TextBox10 = "00 000 00000"
Cancel = True
TextBox10.SetFocus
With TextBox10
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Else
ActiveCell.Offset(0, 2) = Val(TextBox10)
TextBox10 = Format(ActiveCell.Offset(0, 2), ("00 000 00000"))
End If
End Sub

Hoffentlich kann mir jemand helfen,
gruss Walter

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ergänzung...Hinweis
18.01.2004 11:20:50
Walter
Hallo,
habe vergessen, wenn ich ein 0 eingebe, kann ich auch die UserForm schließen.
Hier mein Makro für die UserForm:

Private Sub UserForm_Initialize()
ActiveCell.Offset(0, 2).Select              ' 2 Spalten nach rechts
ActiveCell = Format(Val("00 000 00000"))
ActiveCell.Offset(0, 8).Select                  ' zum Netto Fahrz.-Preis
ActiveCell = Format("0")                        ' zurück Datum/Dienstw.Nutzer
ActiveCell.Offset(0, -10).Select            ' zurück zum Datum
TextBox4 = Format("kr")                          'so setzt Format in Textbox
TextBox5 = Format("mb")                          'so setzt Format in Textbox
TextBox6 = Format("0000")                        'so setzt Format in Textbox
TextBox8 = Format("dd.mm.yyyy")                  'so setzt Format in Textbox
TextBox9 = Format(CDbl("#,##0.00"))              'so setzt Format in Textbox
TextBox10 = Format(Val("00 000 00000"))          'so setzt Format in Textbox
TextBox1 = "  "
TextBox1.SetFocus
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End Sub

Gruss Walter
Anzeige
AW: Ergänzung...Hinweis
18.01.2004 11:46:38
Ramses
Hallo
vielleicht habe ich da in einer Lektion gefehlt,..... aber du kannst eine Textbox nicht formatieren.
Auch bei dieser Anweisung ist mir völlig schleierhaft, wass du damit erreichen willst
ActiveCell = Format(Val("00 000 00000"))
Gruss Rainer
AW: Habe auch keine..
18.01.2004 12:01:38
Walter
Hallo Rainer,
danke für deine Info.
Ich habe irgend gelesen oder auch einen Tip bekommen das man so das Format darstellen kann,wenn man die UserForm aufruft und das Zahlenformat dargestellt werden sool.
Bei meinem Zahlenformat für Beträge funktioniert es, bei der VAL-Ausführung war im Forum
Galenzo so freundlich und hatte mir mal den Tip gegeben.
Ich möchte wenn die UserForm aufgerufen das das Zahlenformat so dargestellt wird.
Weis sonst nicht weiter...
Gruss Walter
Anzeige
AW: Habe auch keine..
18.01.2004 12:15:37
Ramses
Hallo
Das geht nicht.
Für eine Zelle lautet die korrekte Anweisung
ActiveCell.Numberformat = "000 00 000 000"
In einer Userform, kannst du immer erst im Nachhinein, d.h. beim Verlassen der Textbox, das Format definitiv festlegen.
Eine Textbox nimmt nun mal nur Text entgegen, beim verlassen kannst du den darin enthaltenen Text umwandeln und erneut darstellen, aber eben wiederum nur als Text.
Hast du deine Code mal ausprobiert?
Wenn ja, sollte dir aufgefallen sein, dass in jeder Textbox dein Format in Textform steht.
Gruss Rainer
AW: Danke für die Info, bin etwas verwirrrrr
18.01.2004 13:12:21
Walter
Hallo Rainer,
herzlichen Dank für die Info.
Ehrlich gesagt peil ich jetzt nichts mehr.
Meine Textbox9 z.b. sieht so aus:
'

Private Sub TextBox9_Change()

Private Sub TextBox9_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox9) = False And TextBox9 <> "" Then
MsgBox "Es sind nur nummerische Werte erlaubt."
With TextBox9
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
On Error Resume Next
ActiveCell.Offset(0, 10) = CDbl(TextBox9)
TextBox9 = Format(ActiveCell.Offset(0, 10).Value, ("#,##0.00"))
TextBox9.SetFocus
With TextBox9
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End Sub

Wenn ich die UserForm aufrufe ist in der Textbox9 noch nicht das Zahlenformat, gebe ich die Zahl ein z.b.100,25 und verlasse die Textbox9 wird die Zahl korrekt auch im Format angezeigt.
Das einzige Problem hier: Wird Text eingeben, kommt die MsgBox und danach wird die Textbox9 nicht selektiert sondern die nächste.
Hoffentlich habe ich mich richtig ausgedrückt, bin nicht so der Fachmann.
Gruss Walter
Anzeige
AW: Danke für die Info, bin etwas verwirrrrr
18.01.2004 13:26:15
Ramses
Hallo
Der Code so wie er hier steht, stimmt ja auch, nur das was du in deinem ersten Beitrag geschrieben hast, funktioniert nicht.
Um dein Problem zu lösen reicht eine einfache Anweisung
If IsNumeric(TextBox9) = False And TextBox9 <> "" Then
MsgBox "Es sind nur nummerische Werte erlaubt."
With TextBox9
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Cancel = True
End If
Gruss Rainer
AW:So funktioniert Textbox9
18.01.2004 13:29:21
Walter
Hallo Rainer,
habe noch ein wenig probiert.
So läuft meine Textbox9 einwandfrei:

Private Sub TextBox9_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox9) = False And TextBox9 <> "" Then
MsgBox "Es sind nur nummerische Werte erlaubt.  qq"
TextBox9.SetFocus
Cancel = True
With TextBox9
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
On Error Resume Next
ActiveCell.Offset(0, 10) = CDbl(TextBox9)               ' so muß
TextBox9 = Format(ActiveCell.Offset(0, 10).Value, ("#,##0.00"))
'so holt von Tabelle rein, auch Format mit TAB-Taste direkt rein !
TextBox9.SetFocus
With TextBox9
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End Sub

Und so habe ich den Aufruf der UserForm verändert:

Private Sub UserForm_Initialize()
On Error Resume Next
ActiveCell.Offset(0, 10).Select                  ' zum Netto Fahrz.-Preis
ActiveCell = "0.00"                        ' zurück Datum/Dienstw.Nutzer
ActiveCell.Offset(0, -10).Select
TextBox9 = Format(CDbl("#,##0.00"))                    'so setzt Format in Textbox
TextBox9 = Format(ActiveCell.Offset(0, 10).Value, ("#,##0.00"))
TextBox1 = "  "
TextBox1.SetFocus
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Leider kriege ich die Textbox10 mit dem nur 00 000 00000 Format noch
nicht hin.
Gruss Walter

Anzeige
AW: AW:So funktioniert Textbox9
18.01.2004 13:43:12
Ramses
Hallo
lass mal prinzipiell "On Error Resume Next" weg. Das erschwert nur die Fehlerfindung und ist sehr unsauberes programmieren.


Private Sub UserForm_Initialize()
ActiveCell.Offset(0, 10) = 0.00        'Das reicht
'TextBox9 = Format(CDbl("#,##0.00"))   'Das funktioniert nicht !!!!
'Die korrekte Darstellung erfolgt nur durch Zufall
'weil du das Format wie oben bereits beim einlesen aus der Zelle verwendest
TextBox9 = Format(ActiveCell.Offset(0, 10).Value, ("#,##0.00"))
Das ganze hin und her kannst du dir im übrigen sparen weil du sowieso nur 0.00 darstellst

Private Sub UserForm_Initialize()
Me.Textbox9 = "0.00"
Me.Textbox1.SetFocus
End Sub

Mehr brauchst du nicht, weil beim initialisieren der Userform die Textbox1 sowieso leer ist und somit nichts selektiert werden kann :-))

"....Leider kriege ich die Textbox10 mit dem nur 00 000 00000 Format noch nicht hin..."
Habe ich nun bereits mehrfach geschrieben:
"Das geht nicht"
Gruss Rainer

Gruss Rainer
Anzeige
AW: Danke insgesamt !!!
18.01.2004 14:28:38
Walter
Hallo Rainer,
nochmals herzlichen Dank für die Hinweise.
Ich komme glaube irgendwie recht zurecht.
Noch einen schönen Sonntag.
Gruss Walter
Merci :-) Geschlossen o.T.
18.01.2004 14:33:12
Ramses
...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige