|
Tipp 0171
|
Steuerelementgruppe erstellen (Userform)
|
|
|
Autor/Einsender: Datum: |
|
Angie 08.01.2006 (Update) |
|
Entwicklungsumgebung: |
|
Excel 2000 |
|
|
In VBA hat jede TextBox auf einer UserForm seine eigenen Ereignisse, wie beispielsweise das Change- und KeyPress-Ereignis.
Das heißt, dass mehrere TextBoxen normalerweise nicht ein und die selbe Sub-Prozedur aufrufen können. Dieser Tipp zeigt, wie dies
doch möglich ist.
|
Zunächst wird ein Klassenmodul erstellt, hier mit Namen CTextBoxNum, und ein Objekt des Typs MSForms.TextBox deklariert:
|
|
|
Public WithEvents g_objTextBox As MSForms.TextBox
|
|
|
Nachdem das neue Objekt deklariert worden ist, erscheint es im Objekt-Dropdown-Listenfeld im Klassenmodul. Die für das Objekt gültigen Ereignisse
(z. B. das KeyPress-Ereignis) werden im Prozedur-Dropdown-Listenfeld aufgeführt.
|
In diesem Zusammenhang sei darauf hingewiesen, dass folgende TextBox-Ereignisse im Klassenmodul nicht zur Verfügung stehen:
|
- AfterUpdate
- BeforeUpdate
- Enter
- Exit
|
|
Code im Codebereich des Klassenmoduls CTextBoxNum |
|
|
Option Explicit
Public WithEvents g_objTextBox As MSForms.TextBox
Private Sub g_objTextBox_Change()
MsgBox "In der TextBox '" & g_objTextBox.Name & _
"' wurde eine Eingabe gemacht!"
End Sub
Private Sub g_objTextBox_KeyPress(ByVal KeyAscii As _
MSForms.ReturnInteger)
'Nur Eingabe von Zahlen in TextBox zulassen
Select Case KeyAscii
Case Asc("0") To Asc("9"), 8, 13
Case Else
KeyAscii = 0
End Select
End Sub
|
|
|
Bevor jedoch die Ereignis-Prozeduren ausgeführt werden können, muss das deklarierte Objekt im Klassenmodul mit dem TextBox-Objekt
auf der UserForm verbunden werden.
|
|
Code im Codebereich der UserForm |
|
|
Option Explicit
Private m_objTextBoxes() As New CTextBoxNum
Private Sub Init_TextBoxes()
Dim objCtl As Control
Dim nCnt As Integer
For Each objCtl In Me.Frame1.Controls
If TypeOf objCtl Is MSForms.TextBox Then
nCnt = nCnt + 1
ReDim Preserve m_objTextBoxes(1 To nCnt)
Set m_objTextBoxes(nCnt).g_objTextBox = objCtl
End If
Next objCtl
End Sub
Private Sub UserForm_Initialize()
Call Init_TextBoxes
End Sub
Private Sub UserForm_Terminate()
On Error Resume Next
Erase m_objTextBoxes
On Error GoTo 0
End Sub
|
|
|
|
|
|
Die im Download befindlichen *.frm- und *.cls-Dateien können in den unten angegebenen Anwendungen im VB-Editor importiert werden.
|
|
Windows-Version |
95 |
|
|
98/SE |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
Anwendung/VBA-Version |
Access 97 |
|
Access 2000 |
|
Access XP |
|
Access 2003 |
|
Access 2007 |
|
Access 2010 |
|
|
Excel 97 |
|
Excel 2000 |
|
Excel XP |
|
Excel 2003 |
|
Excel 2007 |
|
Excel 2010 |
|
|
Word 97 |
|
Word 2000 |
|
Word XP |
|
Word 2003 |
|
Word 2007 |
|
Word 2010 |
|
|
PPT 97 |
|
PPT 2000 |
|
PPT XP |
|
PPT 2003 |
|
PPT 2007 |
|
PPT 2010 |
|
|
Outlook 97 |
|
Outlook 2000 |
|
Outlook XP |
|
Outlook 2003 |
|
Outlook 2007 |
|
Outlook 2010 |
|
|
|
|
Download (20,4 kB)
|
Downloads bisher: [ 2369 ]
|
|
|