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

Prozentformat - Exit - In Klassenmodul

Prozentformat - Exit - In Klassenmodul
12.05.2003 23:27:51
Andreas R.
Hallo Excelgemeinde,

kurze Frage. Ich habe in einem Formular 25 Textboxen. Die Textboxen 11 - 25 sollen im Prozentformat "#,000.00 %" dargestellt werden. Bei Initialisierung der Userform fange ich das manuell ab, d.h. jeder Wert der eingelesen wird, steht als Prozentwert da. Jetzt möchte ich aber nach Änderung der jeweiligen Textboxen wieder das Prozentformat haben. Dies wollte ich in einem Klassenmodul abfangen, aber das change-Ereignis macht keinen Sinn. Gibt es eine Möglichkeit, ein Exit-Ereignis oder so was in einem Klassenmodul zu bauen?

-----------
Public WithEvents TxtGroup As MSForms.TextBox

Private Sub txtgroup_change()

txtgroup.value = format(txtgroup.value, "#,000.00")

End Sub
-----------

Das funktioniert nicht wirklich so...

Für eure Hilfe besten Dank

Ciao

Andreas

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

Betreff
Datum
Anwender
Anzeige
Alternativfrage
12.05.2003 23:52:22
Andreas R.
Hallo, noch mal ich...

Wie kann ich dieses Makro für tb_admin_11 bis tb_admin25 (ähnlich Klassenfunktion) ausführen lassen?

--------
Private Sub tb_admin11_AfterUpdate()

tb_admin_11.value = Format(tb_admin_11.value, "#,##0.00 %")

End Sub
--------

Re: Alternativfrage
13.05.2003 06:27:23
Forum
Hallo Andreas

ivh habe solche Sache noch nicht programmiert aber versuche mal in der Klasse

Gruß Hajo

Der Code wurde getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Anzeige
Re: Alternativfrage
13.05.2003 10:28:12
Andreas R.
Hallo Hajo,

danke für die Hilfe, der Ansatz ist gut, aber nach jedem Tastendruck, d.h. nach Eingabe der ersten Ziffer setzt er das Format so, wie ich es benötige..., aber anschließend erscheinen die nächsten Ziffern hinter dem Prozentzeichen, ungefähr so:

"100,00%1123"

So macht das natürlich wenig Sinn ;-)

Hier mein Code...

-------
Private Sub TxtGroup_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

'Enter in Zelle
TxtGroup.Value = Format(TxtGroup.Value, "#,000.00 %")

End Sub
-------

Re: Alternativfrage
13.05.2003 10:38:59
Forum
Hallo Andreas

solche Sachen kann ich nur an meinem Homecomputer Testen und dazu komme ich Heute nicht mehr.

Gruß Hajo

Anzeige
Re: Alternativfrage
13.05.2003 10:40:42
Andreas R.
Hallo Hajo,

das hat zur Not auch bis morgen Zeit. Sollte ich zwischenzeitlich die Lösung finden, melde ich mich. Ansonsten freue ich mich natürlich auf Deinen Vorschlag.

Wünsche noch einen schönen Tag.

Andreas

Re: Alternativfrage
13.05.2003 20:41:47
Forum
Hallo Andreas

das wird erst was am 14.04.03 nach 20:00 Uhr. Ich hoffe mal der Beitrag ist zu dem Zeitpunkt noch im Forum

Gruß Hajo

Der Code wurde getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Anzeige
Re: Alternativfrage
13.05.2003 21:26:50
Forum
Hallo Andreas

ich habe mich nun doch noch gleich rangemacht und den Code erstellt. Ich mußte erstmal auch testen, weil dieses Ereignis habe ich noch nie eingesetzt und jetzt auch nicht umfangreich getestet. Ich hoffe es geht. Ansonsten geht es erst wieder am 14.04.03 nach 20:00 Uhr weiter über Tag kann ich nicht so komplizierte Probleme lösen.

Ich habe eine vorhandene Userform von mir dazu benutzt in der 250 Textboxen in 5 Klassen eingeteilt werden. Bei Dir wäre es ja nur eine aber es war mir jetzt zu aufwendig dies umzuarbeiten. Aber ich vermute mal wenn Du Klassenprogrammierung machst kennst Du Dich mit VBA schon recht gut aus.


' **************************************************************
' Modul: Klasse1 Typ = Klassenmodul
' **************************************************************

Option Explicit
Public WithEvents TextGroup As MSForms.TextBox

Private Sub TextGroup_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
' Eingbe überprüfennach Enter in Prozent umwandeln
If KeyCode = 13 Or KeyCode = 9 Then TextGroup.Value = Format(TextGroup.Value / 100, "0.00%")
End Sub


' **************************************************************
' Modul: Auftrag Typ = Userform
' **************************************************************

Option Explicit: Option Compare Text
Dim cb As Control
Dim TextCount1 As Integer, TextCount2 As Integer, TextCount3 As Integer
Dim TextCount4 As Integer, TextCount5 As Integer

Private Sub UserForm_Activate()
Me.Tag = "0"
' Textbox-Klassen setzen
TextCount1 = 0: TextCount2 = 0: TextCount3 = 0: TextCount4 = 0: TextCount5 = 0
For Each cb In Me.Controls
If TypeName(cb) = "TextBox" Then
Select Case cb.Text
Case "1"
TextCount1 = TextCount1 + 1
ReDim Preserve TextBoxen1(1 To TextCount1)
Set TextBoxen1(TextCount1).TextGroup = cb
cb.Text = ""
' Case "2"
' TextCount2 = TextCount2 + 1
' ReDim Preserve TextBoxen2(1 To TextCount2)
' Set TextBoxen2(TextCount2).TextGroup = cb
' cb.Text = 0
' Case "3"
' TextCount3 = TextCount3 + 1
' ReDim Preserve TextBoxen3(1 To TextCount3)
' Set TextBoxen3(TextCount3).TextGroup = cb
' cb.Text = ""
' Case "4"
' TextCount4 = TextCount4 + 1
' ReDim Preserve TextBoxen4(1 To TextCount4)
' Set TextBoxen4(TextCount4).TextGroup = cb
' cb.Text = ""
' Case "5"
' TextCount5 = TextCount5 + 1
' ReDim Preserve TextBoxen5(1 To TextCount5)
' Set TextBoxen5(TextCount5).TextGroup = cb
' cb.Text = ""
End Select
End If
Next cb
Me.Tag = ""
End Sub


' **************************************************************
' Modul: Modul1 Typ = Allgemeines Modul
' **************************************************************

Option Explicit
Public Mldg As String
Public Rategesamt As Double
Public I As Integer
Public TextBoxen1() As New Klasse1
Public TextBoxen2() As New Klasse2
Public TextBoxen3() As New Klasse3
Public TextBoxen4() As New Klasse4
Public TextBoxen5() As New Klasse5

Code eingefügt mit: Excel Code Jeanie

Code Jeanie
Frage
Das Umsetzen nach Html klappt perfekt, auch die Ansicht in den Foren ist gegeben. Bei manchen Foren kann man aber anscheinend nicht den dargestellten Code nach VBA rückkopieren. Warum?
Antwort
Dies liegt nicht an der Code Jeanie !!! Manche Foren interpretieren anscheinend < > Tags nicht richtig und erzeugen am Zeilenende einen weichen Zeilenumbruch anstatt eines harten Zeilenumbruches. Dies führt dazu, dass im VBA-Editor die Zeilen hintereinander geschrieben werden. Zum Rückkopieren in solchen Fällen: Fügen Sie den kopierten Code aus dem Forum nach Word ein, kopieren Sie ihn dort wieder und fügen Sie ihn dann im VBA - Editor ein

Gruß Hajo

Der Code wurde getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Anzeige
Re: Alternativfrage
13.05.2003 21:41:59
Andreas R.
Hallo Hajo,

super und vielen Dank. Ich teste es. Dir noch einen schönen Abend und noch mal wirklich vielen Dank für Deine Mühe...

Andreas

Re: Alternativfrage
13.05.2003 21:46:16
Forum
Hallo Andreas

der Code wirkt nur bei Tab und Enter ist mir inzwischen aufgefallen.

Gruß Hajo

Der Code wurde getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Re: Alternativfrage
13.05.2003 21:50:34
Andreas
Tab und Enter macht ja in diesem Fall auch Sinn..., anders, abgesehen per Mausklick (und das ist zu umständlich), verlässt auch keiner eine Textbox? Denke ich zumindest.

Ciao

Andreas

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige