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 Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Frame
BildScreenshot zu Frame Frame-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Format in TextBox nicht in einem Rahmen(Frame)

Betrifft: Format in TextBox nicht in einem Rahmen(Frame) von: walter
Geschrieben am: 14.09.2004 10:19:39

Hallo,
ich möchte mich entschuldigen, wenn ich aufdringlich bin und noch einmal
NEU zu meiner Sache gestern Abend schreibe "Wieso kein Format".
Nun brauche ich wirklich dringend eine Unterstützung, bitte .
Hier mein verändertes Makro:
'

Private Sub TextBox14_Change()
Private Sub TextBox14_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox14) = False And TextBox14 <> "" Then
    MsgBox "Es sind nur nummerische Werte erlaubt."
        TextBox14.SetFocus
With TextBox14
    .SetFocus
    .SelStart = 0
    .SelLength = Len(.Text)
End With
TextBox14 = "000 000"
End If
 On Error Resume Next
ThisWorkbook.Worksheets("Prov-Blatt").Range("M4") = CDbl(TextBox14)
TextBox14 = Format(ThisWorkbook.Worksheets("Prov-Blatt").Range("M4").Value, ("000 000"))
    TextBox14.SetFocus
With TextBox14
    .SetFocus
    .SelStart = 0
    .SelLength = Len(.Text)
End With
   End Sub

Beim verlassen der TextBox14 soll direkt das Format angezeigt werden.
Funktioniert auch, wenn die TextBox14 außerhalb des Rahmens(Frame), leider keine
Reaktion wenn ich die TextBox14 in den vorgesehenen Rahmen plaziere.
Wer kennt den die Lösung, wenn die TextBox14 in einem Frame liegt ???
Ich bedanke mich im voraus
Gruss Walter
  


Betrifft: AW: Format in TextBox nicht in einem Rahmen(Frame) von: max
Geschrieben am: 14.09.2004 13:30:39

In Excel2000:
"Frame1.TextBox14"
Vielleicht bei Dir auch.

Max


  


Betrifft: AW: ohne Erfolg von: walter
Geschrieben am: 14.09.2004 14:24:34

Hallo Max,
leider keine Reaktion.
Ich habe eine UserForm muß aber in der auch mit Excel97 arbeiten.
Wie gesagt, ohne Rahmen kein Problem.
Vielleicht hast Du noch eine Idee.
Gruss Walter


  


Betrifft: AW: ohne Erfolg von: max
Geschrieben am: 14.09.2004 17:20:58

Hallo.
Habe Deine erste Frage im Forum nicht finden können, deshalb kann ich nur mutmaßen, was Du vorhast.
Nach geteste und gegrübel:
Irgendwie beißen sich in Deinem makro 'n paar Katzen in mehrere Schwänze (oder ich hab's nicht richtig intus):
Der Wert soll numerisch sein, bekommt aber im Format ein Leerzeichen verpasst. Das gibt Ärger, wenn man die letzte Ziffer einer (richtigen) Zahl verändern will.
Dann wird sie in "M4" eingetragen, um wieder in die Textbox, wo sie schon steht, eingetragen zu werden.
Zudem verhindert ein On-Error-Resume-Next einen sauberen Ablauf. Eventuell wird der Format-Befehl gar nicht ausgeführt.
Kann sein, dass Excel dass auch nicht gut findet.
Das Exit-Makro bekomm' ich übrigens auch nicht zum Laufen, hab's daher mal mit AfterUpdate versucht:

<pre>
Private Sub TextBox14_AfterUpdate()
If IsNumeric(TextBox14) = False And TextBox14 <> "" Then
MsgBox "Es sind nur numerische Werte erlaubt."
TextBox14 = ""
Exit Sub
End If
ThisWorkbook.Worksheets("Prov-Blatt").Range("M4") _
= CDbl(TextBox14)
TextBox14 = Format(TextBox14, "000 000")
End Sub</pre>

Könnte sein, dass jetzt Excel97 noch vor j e d e m "TextBox14" den Namen des Frames sehen will, und davor eventuell noch den Namen der Userform.
Auf dieser Seite der Leitung läuft's auch so. Leider wie geschrieben mit Excel2000.

Vielleicht haben wir aber auch Verständnisschwierigkeiten. Bei genauerer Beschreibung würde ich versuchen, Dir noch was schicken.
Max


  


Betrifft: AW: ohne Erfolg von: walter
Geschrieben am: 14.09.2004 17:50:54

Hallo Max,
ich finde es toll das Du dir so eine Menge ZEIT genommen hast.
Nochmals zur Erklärung:
Das Makro läuft einwandfrei, schreibt auch in die Mappe, beim verlassen mit TAB wird
dann auch das Format so RICHTIG in der TextBox14 angezeigt.
"123 456", wenn ich jetzt diese TextBox in einem Frame schiebe, weil das Optisch schöner aussieht, wird auch alles reingeschrieben, jedoch wird beim verlassen das Format nicht
angezeigt. "123456" nur beim wieder Aufruf der UserForm wird dann auch das Format Richtig angezeigt.
Hier mein aktuelles Makro:
Private Sub TextBox14_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox14) = False And TextBox14 <> "" Then
    MsgBox "Es sind nur nummerische Werte erlaubt."
        TextBox14.SetFocus
With TextBox14
    .SetFocus
    .SelStart = 0
    .SelLength = Len(.Text)
End With
TextBox14 = "000 000"
End If
 On Error Resume Next
ThisWorkbook.Worksheets("Prov-Blatt").Range("M4") = CDbl(TextBox14)
TextBox14 = Format(ThisWorkbook.Worksheets("Prov-Blatt").Range("M4").Value, ("000 000"))
    TextBox14.SetFocus
With TextBox14
    .SetFocus
    .SelStart = 0
    .SelLength = Len(.Text)
    'In Excel2000:
'"Frame1.TextBox14"
'Vielleicht bei Dir auch.
'Max
End With
End Sub

Gruss Walter


  


Betrifft: AW: ohne Erfolg von: max
Geschrieben am: 14.09.2004 18:12:17

Ich habe gearade Dein aktuelles Makro von
Private Sub TextBox14_Exit(ByVal Cancel As MSForms.ReturnBoolean)
nach
Private Sub TextBox14_AfterUpdate()
umbenannt und es bringt mir das gewünschte Format in die TextBox (im Frame)
Nur entstehen dadurch eventuell weitere Probleme, die ein Umdenken erfordern.
Versuch's mal, nur die erste Zeile ersetzen.
Max


  


Betrifft: Danke Super hat geklappt ! von: Walter
Geschrieben am: 14.09.2004 19:50:12

Hallo Max,
super.
Danke das hat ja super geklappt.
Gruss Walter


  


Betrifft: Frage warum... von: Walter
Geschrieben am: 14.09.2004 20:13:07

Hallo Max,
hast mir sehr geholfen, habe nur noch die Frage, wie Du das meinst.
Was heißt: AfterUpdate()?
Habe nur die Überschrift kopiert und funktioniert, muß ich noch was
für später beachten ?
Gruss walter


  


Betrifft: AW: Danke Super hat geklappt ! von: max
Geschrieben am: 14.09.2004 22:11:09

Nein,
wenn was nicht klappt wird Excel sich schon melden. Hatte wohl in eine falsche Richtung gedacht.
Hier nochmal aus der Hilfe Exit & AfterUpdate:
AfterUpdate-Ereignis

Tritt ein, nachdem Daten in einem Steuerelement über die Benutzeroberfläche geändert wurden.

Syntax

Private Sub object_AfterUpdate( )

Die Syntax für das AfterUpdate-Ereignis besteht aus folgenden Teilen:

Teil Beschreibung
object Erforderlich. Ein gültiges Objekt.


Hinweise

Das AfterUpdate-Ereignis tritt unabhängig davon ein, ob das Steuerelement gebunden ist (dies ist der Fall, wenn die RowSource-Eigenschaft eine Datenquelle für das Steuerelement angibt). Dieses Ereignis kann nicht abgebrochen werden. Wenn Sie die Aktualisierung abbrechen möchten (also den vorherigen Wert des Steuerelements wiederherstellen möchten), verwenden Sie das BeforeUpdate-Ereignis und setzen das Argument Cancel auf den Wert True.

Das AfterUpdate-Ereignis tritt nach dem BeforeUpdate-Ereignis und vor dem Exit-Ereignis für das aktuelle Steuerelement sowie vor dem Enter-Ereignis für das nächste Steuerelement in der Aktivierreihenfolge ein.



Enter-, Exit-Ereignisse

Das Enter-Ereignis tritt ein, bevor ein Steuerelement den Fokus von einem anderen Steuerelement im gleichen Formular erhält. Das Exit-Ereignis tritt ein, unmittelbar bevor der Fokus von einem Steuerelement auf ein anderes Steuerelement im gleichen Formular wechselt.

Syntax

Private Sub object_Enter( )

Private Sub object_Exit( ByVal Cancel As MSForms.ReturnBoolean)

Die Syntax der Ereignisse Enter und Exit besteht aus folgenden Teilen:

Teil Beschreibung
object Erforderlich. Ein gültiger Objektname.
Cancel Erforderlich. Ereignisstatus. False zeigt an, dass das Steuerelement das Ereignis verarbeiten soll (Voreinstellung). True zeigt an, dass die Anwendung das Ereignis verarbeitet und der Fokus auf dem aktuellen Steuerelement verbleibt.


Hinweise

Die Ereignisse Enter und Exit sind vergleichbar mit den Ereignissen GotFocus und LostFocus in Visual Basic. Anders als die Ereignisse GotFocus und LostFocus treten die Ereignisse Enter und Exit nicht ein, wenn ein Formular den Fokus erhält oder abgibt.

Angenommen, Sie wählen das Kontrollkästchen aus, das das Enter-Ereignis auslöst. Wenn Sie dann ein anderes Steuerelement im gleichen Formular auswählen, wird das Exit-Ereignis für das Kontrollkästchen ausgelöst (da der Fokus an ein anderes Objekt im gleichen Formular weitergegeben wird). Anschließend tritt das Enter-Ereignis für das zweite Steuerelement in dem Formular ein.

Da das Enter-Ereignis eintritt, bevor der Fokus an ein bestimmtes Steuerelement weitergegeben wird, können Sie eine Enter-Ereignisprozedur verwenden, um Anweisungen anzuzeigen. Sie könnten z.B. ein Makro oder eine Ereignisprozedur verwenden, um ein kleines Formular oder ein Meldungsfeld anzuzeigen, das die Art der Daten angibt, den das Steuerelement normalerweise enthält.

Anmerkung Um zu verhindern, dass das Steuerelement den Fokus abgibt, können Sie dem Cancel-Argument des Exit-Ereignisses den Wert True zuweisen.


Max


 

Beiträge aus den Excel-Beispielen zum Thema "Format in TextBox nicht in einem Rahmen(Frame)"