Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

VBA TextBox Formatierung

Betrifft: VBA TextBox Formatierung von: Andy
Geschrieben am: 17.11.2012 08:16:50

Guten Morgen zusammen

Bin mal wieder auf der Suche nach Hilfe.

Habe ein UF mit Textboxen, in einer Textbox sollte ich zahlen eingeben.

und möchte das dies gleich auch in der UF so dargestellt wird und auch in der
Tabelle.

123.4.456.789 = Darstellung

123445679 = Eingabe in UF

So sollte es aussehen. Hat da jemand eine Idee wie ich das hinbekomme?
Meine sucherei hat mich zu nichts geführt

Danke und Gruss

Andy

  

Betrifft: Rückfragen von: Erich G.
Geschrieben am: 17.11.2012 08:47:13

Hi Andy,
woher kommt die 8 in 123.4.456.789 ?

Was, wenn weniger oder mehr als 9 Ziffern eingegeben werden?

Was, wenn andere Zeichen eingegeben werden, z. B. der Text "weiß nich"?

Wie also sähen die Darstellungen aus zu folgenden Eingaben:
0
123456789012
123.567.9
weiß nich

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: Rückfragen von: Andy
Geschrieben am: 17.11.2012 09:09:10

Hallo Erich

Also die Zahl hat immer Zehn Stellen das ist fix,
Sie dient als Identifikations Nr. zu einem Dokument.

Das sind automatisch generierte Nr.

gruss andy


  

Betrifft: Rückfragen und ein Code von: Erich G.
Geschrieben am: 17.11.2012 10:07:13

Hi Andy,
wie kommen die Ziffern in die Textbox? Per manueller Eingabe?
Oder per Programm? (wegen "automatisch generierte Nr.")

Bei manueller Eingabe hat der Text in der Textbox natürlich nicht immer die Länge 10 - die erreicht er erst am Ende der Eingabe.

Zu welchem Zeitpunkt willst du die Richtigkeit der Eingabe prüfen (erzwingen)?
Bei jedem Verlassen der Textbox? (kann mehrmals sein)

Oder hast du einen "OK"- uder "Speichern"-Button, in dessen Code die Prüfung laufen soll
(vor dem Speichern im Tabellenblatt)?

Du hast ja schon eine Mappe mit der UF und einer Textbox. Wie heißt die Textbox, um die es hier geht?

Ich geh mal aus vom Namen TextBox1:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   Dim strT As String

   strT = Replace(TextBox1, ".", "")
   If Len(strT) = 10 Then
      If IsNumeric(strT) Then
         TextBox1 = Format(CLng(strT), "000\.0\.000\.000")
      Else
         MsgBox "Eingabe nicht nummerisch"
         Cancel = True
      End If
   Else
      MsgBox "Eingabe muss 10 Stellen lang sein"
      Cancel = True
   End If
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: neuer Code von: Erich G.
Geschrieben am: 17.11.2012 10:31:14

Hi Andy,
"IsNumeric" reicht nicht aus - da kommen auch Dezimalzahlen (mit Komma) durch.

Hier ein neuer Code:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   Dim iEin As Integer, ii As Integer, strT As String

   iEin = Len(TextBox1)
   For ii = 1 To iEin
      If Mid(TextBox1, ii, 1) >= "0" And Mid(TextBox1, ii, 1) <= "9" Then
         strT = strT & Mid(TextBox1, ii, 1)
      ElseIf Mid(TextBox1, ii, 1) = "." Then
      Else
         MsgBox "Eingabe nicht nummerisch", vbCritical
         Cancel = True
         Exit For
      End If
   Next ii
   If ii = iEin + 1 Then
      If Len(strT) = 10 Then
         TextBox1 = Format(CLng(strT), "000\.0\.000\.000")
      Else
         MsgBox "Eingabe muss 10 Stellen lang sein", vbCritical
         Cancel = True
      End If
   End If
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: neuer Code von: Andy
Geschrieben am: 17.11.2012 10:49:47

Hi Erich

Also die Ziffern werden manuell eingetragen.

Mittels Button soll die Eingabe aller Daten in die Tabelle geschrieben werden.

Meine TextBox = TextBox2

Ist die Gruppierung dann auch im UF ersichtlich?

Gruss und Danke

Andy


  

Betrifft: mal testen von: Erich G.
Geschrieben am: 17.11.2012 11:11:01

Hi Andy,
meine Frage
"Zu welchem Zeitpunkt willst du die Richtigkeit der Eingabe prüfen (erzwingen)?
Bei jedem Verlassen der Textbox? (kann mehrmals sein)"
hast du nicht beantwortet. Mein Code behandelt die Prüfung beim Verlassen der Textbox.

Ändere überall im Code TextBox1 zu TextBox2 und probier ihn dann einfach mal aus. :-)

Mit der Zeile
TextBox1 = Format(CLng(strT), "000\.0\.000\.000")
wird die Anzeige der Eingabe in der Textbox aufbereitet.

Die Ausgabe im Blatt erledigst du ja woanders - wohl beim Button_Click.

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: mal testen von: Andy
Geschrieben am: 17.11.2012 11:38:43

Hi Erich

Sorry habe ich nicht gesehen, würde gerne die Prüfung währed der Eingabe machen
dient zur besseren Lesbarkeit. Wenn das nicht allzu aufwendig ist

Sonst ist das genau das was ich gesucht habe, die Ausabe erfolgt über den Button_Click.

Danke und Gruss

Andy


  

Betrifft: AW: mal testen von: Andy
Geschrieben am: 17.11.2012 12:30:13

Hi Erich

Habe mal getestet mit dem Code bei Textbox2 wenn ich Ziffern eingebe

Z.B. 0201456987 ist alles Ok

Wenn ich z.B. 4401236547 eingebe kommt Laufzeitfehler 6 Überlauf

Wie kann man das beheben damit alle Ziffern funktionieren?

Danke und Gruss Andy


  

Betrifft: Überlauf von: Erich G.
Geschrieben am: 17.11.2012 13:01:33

Hi Andy,
au ja, das ist zu groß für Long, aber man kann strT ja aufteilen. Ersetze bitte die Zeile
TextBox1 = Format(CLng(strT), "000\.0\.000\.000")
durch

TextBox1 = Format(CLng(Left(strT, 5)), "000\.0\.0") & _
            Format(CLng(Right(strT, 5)), "00\.000")
Beim Prüfen während der Eingabe gibt es ein Problem:
Es lässt sich dabei nicht prüfen, ob ausreichend viele (also 10) Ziffern eingegeben werden.
Wenn das 7. Zeichen eingegeben wird, kann man prüfen, ob nicht schon 10 Ziffern da sind
und ob das neue Zeichen auch eine Ziffer ist.
Aber man kann natürlich nicht prüfen, ob der Benutzer gleich noch ein Zeichen eingeben wird - das wäre Hellseherei.

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: Überlauf von: Andy
Geschrieben am: 17.11.2012 15:27:10

Hi Erich

Danke jetzt ist super, dass mit der Prüfung ist auch ok so, klar wäre das Helseherei :-)

Werde mich nun mal dran machen zu versuchen die Comboboxen mit zu füllen und dann ein neues UF wo ich die Ziffern eingebe und dann das entsprechende Ergebniss angezeigt wird hoffe ich kriege das hin.
Habe noch nicht so grosse Erfahrung mit VBA.

Bis Bald

Gruss Andy


  

Betrifft: Frage ist derzeit nicht offen (owT) von: Erich G.
Geschrieben am: 18.11.2012 08:23:26

owT:=ohne weiteren Text


  

Betrifft: AW: Frage ist derzeit nicht offen (owT) von: Andy
Geschrieben am: 18.11.2012 16:57:04

Hi Erich

Verstehe das mit dem owT:= ohne weiteren Text nicht was hat das für eine Bedeutung und wann braucht man das?

Gruss Andy


  

Betrifft: Frage ist derzeit nicht offen (mwT) von: Erich G.
Geschrieben am: 18.11.2012 17:31:50

Hi Andy,
owT oder etwas ähnliches kann man schreiben, wenn die gesamte Info im Betreff steckt und der Beitrag leer ist.
Das erspart allen Lesern ein überflüssiges und nutzloses Öffnen des Beitrags.

Es gibt hier nicht wenige Nutzer, die auch dann "owT" im Betreff schreiben, wenn sie wesentlichen Text im Beitrag haben.
Die laufen dann aber Gefahr, dass der Beitrag nicht gelesen wird...
Deshalb - wegen dieses wesentlichen Textes - habe ich jetzt "mwT" in den Betreff geschrieben. ;-)
(ist nur ein Scherz!)

Bei der Gelegenheit noch ein "offenes" Wort:
Einen Thread, eine Frage stellt man auf offen, wenn man potentielle Antworter veranlassen will, eine Antwort zu suchen.
So ein Thread erscheint in der Liste "noch offen" und ist in der normalen Forumsliste gekennzeichnet.

Überflüssig (und unpassend) ist die Kennzeichnung als offen, wenn wer Fragesteller selbst dran ist,
z. B. mit der Beantwortung von Rückfragen. Solange der Fragesteller nichts Neues geschrieben hat,
ist der Thread für potentielle Antworter ja nicht interessant.

Mein Beitrag "Frage ist derzeit nicht offen (owT)" sollte nur diesen Thread auf "nicht offen" stellen.

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


  

Betrifft: AW: Frage ist derzeit nicht offen (mwT) von: Andy
Geschrieben am: 18.11.2012 18:04:49

HI Erich

Alles ich hoffe das ich das nun richtig verstanden habe.
und habe keinen Hacken gesetzt

Danke für deine Info

Gruss Andy


  

Betrifft: Überlauf - einfacher beseitgt von: Erich G.
Geschrieben am: 17.11.2012 13:04:37

Hi Andy,
du kannst auch einfach CDbl statt CLNG schreiben, also

TextBox1 = Format(CDbl(strT), "000\.0\.000\.000")

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich


 

Beiträge aus den Excel-Beispielen zum Thema "VBA TextBox Formatierung"