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
 
Weitere Links zum Thema
Steuerelementgruppe erstellen (Tabellenblatt)
Hinweis
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: [ 2120 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 7. August 2011