Thema Datum  Von Nutzer Rating
Antwort
Rot Viele Userformen sollen auf bestimmte Unterprogramme zugreifen
16.09.2020 01:04:52 Gast15116
NotSolved
16.09.2020 08:47:47 volti
Solved
16.09.2020 15:55:59 Gast73460
Solved

Ansicht des Beitrags:
Von:
Gast15116
Datum:
16.09.2020 01:04:52
Views:
752
Rating: Antwort:
  Ja
Thema:
Viele Userformen sollen auf bestimmte Unterprogramme zugreifen

Hallo zusammen,

ich habe folgendes Problem und würde mich sehr über Hilfe freuen.

Ich habe mehrere Userformen die jeweils für einen bestimmten Bereich zuständig sind. Anzahl und Art der Steuerelemente sind für die Bereiche angepasst. Es gibt aber einige Sachen die (egal von welcher Userform kommend) immer gleich sein sollen. Fast alle Eingaben müssen mit "Return" bestätigt werden und dann soll geprüft werden ob z.B ein Eintrag gemacht worden ist oder dieser Eintrag schon vorhanden ist etc.Nach den Abfragen sollen verschiedene Ereignisse statt finden. z.B werden Comboboxen sichtbar gemacht  und gefüllt um weitere Daten zu ermitteln oder die Einträge in ein Tabellenblatt geschrieben. Bislang hatte ich diese Abfragen immer in der jeweiligen Userform, aber mir erscheint dies viel zu aufwendig und ich dachte ich könne dies über Klassenmodule regeln. Mein erster Versuch schaut so aus:

In der Userform:

Option Explicit
 
Private myTxt As clsTextbox
 
Private Sub UserForm_Initialize()
    Dim ctrl As Control
    For Each ctrl In Me.Controls 
        If TypeOf ctrl Is MSForms.TextBox Then 
            Set myTxt = New clsTextbox
            Set myTxt.TxtBox = ctrl
        End If
    Next
End Sub
 
Im Klassenmodul:
 
Option Explicit
 
Public WithEvents TxtBox As MSForms.TextBox
 
Private Sub Class_Initialize()
    Static collTxtBox As New Collection
    collTxtBox.Add Me
End Sub
 
Private Sub TxtBox_Change()
    If Not IsNumeric(TxtBox) Then
        SendKeys "{BS}"
        Beep
    End If
End Sub
 
Private Sub TxtBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Weiter = False                  ' "Weiter" bestimmt ob es im Programm weitergeht. Vor der Prüfung erstmal auf false setzen damit es nicht auf  true sein kann
If KeyCode = 13 Then
txtEintragPrüfen               ' hier geht es zum Prüfen
End If
End Sub
 
Sub txtEintragPrüfen()
If TxtBox.Value = "" Then    ' wenn Leer dann nochmal
TxtBox.SetFocus
Exit Sub
Else
Weiter = True   '  * wenn der Eintrag passt soll es im Programm weitergehen.
End If
End Sub
 
'* und genau hier liegt mein Hund gerade begraben: 
Wie kann ich jetzt im Proramm fortfahren? Bislang stand in der Userform sowas wie:
 
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
txtEin = 1
txtEintragPrüfen
Select Case True
Case Weiter = True
TextBox10.Value = TextBox1.Value
txtEin = 10: txtAus = 10
txtOn
txtOff
Daten(6) = TextBox1.Value
txtAus = 1: cboEin = 10
txtOff
cboOn
cboFüllen
End Select
End If
End Sub
 
Mein Ziel ist das ich egal aus welcher userform kommend und egal aus welcher Textbox, Combobox, Button die Einträge in einem Modul oder Klassenmodul prüfen lasse und das Programm dann weiter geht.
Ich hoffe ich konnte das Problem verständlich beschreiben und wäre sehr glücklich wenn ihr mir helfen könntet :)

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Viele Userformen sollen auf bestimmte Unterprogramme zugreifen
16.09.2020 01:04:52 Gast15116
NotSolved
16.09.2020 08:47:47 volti
Solved
16.09.2020 15:55:59 Gast73460
Solved