Office: (Office 2019) VBA Formular rechnet nicht

Helfe beim Thema VBA Formular rechnet nicht in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe ein Problem mit der angehängten Datei. Diese besteht aus: Der Tabelle1 in welcher sich ein CommandButton befindet, der... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Chaoswolf, 6. September 2022.

  1. Chaoswolf
    Chaoswolf User

    VBA Formular rechnet nicht


    Hallo zusammen,

    ich habe ein Problem mit der angehängten Datei.

    Diese besteht aus:
    • Der Tabelle1 in welcher sich ein CommandButton befindet, der nichts weiter tut, als die UserForm zu öffnen.
    • Einer UserForm in der Benutzereingaben getätigt werden sollen.
    • Einem Basismodul wo die Benutzereingaben in nummerische Werte umgewandelt werden und mit denen dort gerechnet werden soll. Anschließend soll der Ausgabewert in eine Textbox zurückgeschrieben werden.
    • Einem Klassenmodul in dem die Eingabewerte validiert werden sollen. Außerdem soll immer wenn eine Textbox geändert wird der Code aus dem Basismodul ausgeführt werden.
    Die Erwartungshaltung ist halt, dass die Berechnung durch das Klassenmodul automatisch durchgeführt wird, wenn sich etwas an den Eingaben in der Userform ändert. Das Ergebnis soll dann in die entsprechenden Textboxen übergeben werden. Leider geschieht das nicht.

    Falls man sich fragt, warum ich das ganze so komplex aufgebaut habe, dann liegt das daran, dass nachher noch mehrere Formular hinzukommen sollen, die ich dann anhand des UF.Name identifizieren möchte. So muss ich wiederholende Variablen nicht immer wieder erneut deklarieren. Den Code in der Klasse möchte ich auch nur einmal haben um das Ganze wartungsfreundlicher und schlanker zu haben.

    Hier nochmal der Übersicht halber der Code aus den Komponenten.

    Userform
    Code:
    'Erstellen des Arrays mit Zuweisung der Klasse zur Eingabevalidierung
    Dim MeTxTBox(5)     As New clsWaermetauscherBerohren
    
    'Initialisierung / Einrichtung der Userform
    Private Sub UserForm_Initialize()
        'Zuweisung zum Klassenmodul
        Set MeTxTBox(3).TxTBox = txtDurchmesserRohr
        Set MeTxTBox(4).TxTBox = txtWanddickeRohr
        Set MeTxTBox(5).TxTBox = txtLaengeRohr
    End Sub
    Basismodul
    Code:
    Option Explicit
    
    'Definition der Variablen
    Dim dblDurchmesserRohr      As Double
    Dim dblKDurchmesserRohr     As Double
    Dim dblWanddickeRohr        As Double
    Dim intLaengeRohr           As Integer
    Dim dblMasseRohr            As Double
    Dim dblVolumen              As Double
    
    'Erstellen der Funktion PI
    Public Function PI() As Double
      PI = 4 * CDec(Atn(1))
    End Function
    
    'Simuliert den Klick auf einen Berechnungs Button
    Sub cmdBerechnung_Click(UF As Object)
    
    'Hier werden die Objekte definiert
      If UF.Name = "frmWaermetauscherBerohren" Then 'Fragt ab ob es sich um die passende Userform handelt.
        With frmWaermetauscherBerohren
          'Eingabewerte in nummerischen Wert konvertieren
          dblDurchmesserRohr = Val(.txtDurchmesserRohr)
          dblWanddickeRohr = Val(.txtWanddickeRohr)
          intLaengeRohr = Val(.txtLaengeRohr)
          
          'Berechnungen der Ausgabewerte
          dblKDurchmesserRohr = dblDurchmesserRohr - 2 * dblWanddickeRohr
          dblVolumen = (PI() * intLaengeRohr / 4) * (dblDurchmesserRohr ^ 2 - dblKDurchmesserRohr ^ 2) / 1000000
          dblMasseRohr = dblVolumen * 8
          
          'Übergabe der Variablen in die Texboxen
          .txtMasseRohr = Format(dblMasseRohr, "0.000#")
        End With
      End If
    End Sub
    Klassenmodul
    Code:
    Option Explicit
    
    'Erstellen des public Events
    'Dieses wird in allen Modulen verfügbar sein
    'Durch Set MeTxTBox(0).TxTBox kann eine Textbox dieser Klasse zugewiesen werden
    Public WithEvents TxTBox As MSForms.TextBox
    
    'Wird ausgeführt wenn ein Textfeld geändert wird
    Private Sub TxtBox_Change()
      Call cmdBerechnung_Click(TxTBox.Parent)
    End Sub
    
    'Validierung von Textboxen
    Private Sub TxTBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    'Erlaubt nur Ziffern und Komma
    If InStr("1234567890.,-" & Chr$(8), Chr$(KeyAscii)) = 0 Then
      KeyAscii = 0
    End If
    'Umwandlung von Komma in Punkt
    If KeyAscii = Asc(",") Then
       KeyAscii = Asc(".")
    End If
    End Sub
    Ich hoffe ich konnte mein Anliegen ausreichend genau schildern, bei Fragen einfach melden.

    Vielen Dank im Voraus an alle Hilfsbereiten!
     
    Chaoswolf, 6. September 2022
    #1
  2. {Boris} hat Ahnung
    Hi,

    Dein Userform in der Mappe heißt fraRohr - demnach muss die Abfrage so lauten:

    Code:
    If UF.Name = "fraRohr" Then 'Fragt ab ob es sich um die passende Userform handelt.
        With UF
     
    1 Person gefällt das.
  3. {Boris} hat Ahnung
    Hi,

    genauer muss es heißen:
    TxTBox.Parent liefert fraRohr.
     
    1 Person gefällt das.
  4. Chaoswolf
    Chaoswolf User

    VBA Formular rechnet nicht

    ah... das dieser Frame mir das Genick bricht, hatte ich nicht bedacht!

    Vielen Dank Boris!

    Kann man das beim Debuggen irgendwie herausfinden, oder muss man das einfach wissen?
     
    Chaoswolf, 6. September 2022
    #4
  5. {Boris} hat Ahnung
    Hi,

    Kann man das beim Debuggen irgendwie herausfinden

    Ich hab auf die Schnelle nen Haltepunkt gesetzt bei Call cmdBerechnung_Click(TxTBox.Parent) , dann mit F8 weiter, und mir bei cmdBerechnung zu Beginn den UF.Name per MsgBox anzeigen lassen:

    Sub cmdBerechnung_Click(UF As Object)
    MsgBox UF.Name
    ....
    End Sub
     
    1 Person gefällt das.
  6. Chaoswolf
    Chaoswolf User
    okay, dafür muss man natürlich erst einmal auf die Idee kommen, dass es an dem Namen der UserForm handelt.

    Da zeigt sich wohl meine mangelnde Erfahrung! Vielen Dank für die Lösung und den Hinweis zur Fehlerfindung.
     
    Chaoswolf, 6. September 2022
    #6
  7. {Boris} hat Ahnung
    Hi,

    noch einfacher kannst Du das übrigens im Lokalfenster sehen.
     
  8. Chaoswolf
    Chaoswolf User

    VBA Formular rechnet nicht

    ich glaube ich muss mich mal wirklich mehr mit dem Thema Fehlersuche beschäftigen. Was das Programmieren angeht bin ich eher Quereinsteiger. Dank deiner Anstöße habe ich es mittlerweile herausgefunden, wie ich im Lokalfenster die Werte der Variablen anzeigen lassen kann und anhand von Überwachungsausdrücken diese separat anzeigen lassen kann. Vielen Dank dafür!
     
    Chaoswolf, 6. September 2022
    #8
  9. {Boris} hat Ahnung
    Hi,

    ich glaube ich muss mich mal wirklich mehr mit dem Thema Fehlersuche beschäftigen. Was das Programmieren angeht bin ich eher Quereinsteiger.

    Ich finde, Du machst das schon sehr gut! Und das Thema "Fehlersuche" ist - gerade bei umfangreichen Programmen - absolut wichtig/unerlässlich. Hier gibt es bei Vielen doch noch große Defizite. Kann man sich also nicht genug "draufschaffen" ;-)
     
    1 Person gefällt das.
  10. Chaoswolf
    Chaoswolf User
    leider habe ich das Problem erneut, aber mit anderer (denke ich) Ursache...

    Wie im Eingangsthread erwähnt, soll der Code so wenig wie möglich redundant sein. Deshalb habe ich mich dafür entschieden Funktionen als eine Art Modul in andere Dateien auszulagern.

    Die Aufrufende Datei ist die Basis. Diese soll über Buttons andere Module nachladen können, die in einem fest definierten Pfad liegen. Das mit dem Laden der Module und der Userform scheint auch soweit wie gewünscht zu funktionieren.

    Wenn sich dann aber anschließend das Formular öffnet und dort Eingaben getätigt werden, rechnet das Formular jedoch nicht.

    Das richtige Formular wird jedoch ohne Fehlermeldung aufgerufen.

    VBA Formular rechnet nicht upload_2022-9-7_14-4-45.png

    Auch beim Einzelschrittdurchlauf ist mir jetzt nichts aufgefallen, was ich ungewöhnlich finden würde...
     
    Chaoswolf, 7. September 2022
    #10
  11. Chaoswolf
    Chaoswolf User
    Ich hoffe noch mal auf eure Hilfe. Ich habe jetzt diverse Variablen als Überwachungsausdrücke definiert und das Ganze im Einzelschritt-Modus durchlaufen lassen, aber ich finde den Fehler einfach nicht. VBA Formular rechnet nicht :( Was mache ich falsch?
     
    Chaoswolf, 12. September 2022
    #11
Thema:

VBA Formular rechnet nicht

Die Seite wird geladen...
  1. VBA Formular rechnet nicht - Similar Threads - VBA Formular rechnet

  2. Im Formular mit VBA-Code in Datensätzen blättern

    in Microsoft Access Hilfe
    Im Formular mit VBA-Code in Datensätzen blättern: Hallo Forum, wie kann ich in einem Formular mit VBA-Code nach Datensätzen blättern ? ich möchte in einem numerischen Feld den ersten Datensatz finden, in dem das Feld leer ist. Wie sieht eine...
  3. MSAccess - Feldinhalt in Formular aus anderer Tabelle befüllen (VBA)

    in Microsoft Access Hilfe
    MSAccess - Feldinhalt in Formular aus anderer Tabelle befüllen (VBA): Hallo und guten Tag allerseits, ich habe ein, für viele von Euch sicherlich einfach zu lösendes Problem. In meiner Tabelle literatur habe ich unter anderem die Felder Magazin, Kennung_Jahrgang,...
  4. Hilfe

    in Microsoft Excel Hilfe
    Hilfe: Liebe Alle, ich bin ganz neu in diesem Forum und bräuchte Hilfe zu einem Excel Projekt. Ich möchte (siehe Bild 1) das die Felder die dort ausgefüllt werden automatisch in Bild 2 übertragen in...
  5. Formular mit Bedingung öffnen aus einem Listenfeld heraus (VBA)

    in Microsoft Access Hilfe
    Formular mit Bedingung öffnen aus einem Listenfeld heraus (VBA): Hallo zusammen, ich möchte aus einem Listenfeld ein Formular mit einer Bedingung öffnen, wenn ich die Enter/Return-Taste drücke. Hinweis: im gleichen Formular ist bereits die Enter-Taste schon...
  6. Formulare - Übergabe von Primär- und Fremdschlüssel mit VBA o. ä.

    in Microsoft Access Hilfe
    Formulare - Übergabe von Primär- und Fremdschlüssel mit VBA o. ä.: Hallo zusammen, ich benötige Hilfe bei Formularen und VBA. Ich habe ein Hauptformular mit drei Unterformularen. Im Kopfbereich des Hauptformulars befinden sich mehrere Befehlsschaltflächen,...
  7. Excel VBA aus einem Formular Daten in eine geschlossen Arbeitsmappe zu übertragen

    in Microsoft Excel Hilfe
    Excel VBA aus einem Formular Daten in eine geschlossen Arbeitsmappe zu übertragen: Hallo, ich bräuchte mal eure Hilfe Ich habe ein Solaranlage, wo ich jede Woche neu Daten bekomme, die ich in der Arbeitsmappe SolarStrom 2020_01_01 speichere. Die Daten werden in eine Formular...
  8. NACH Filter im Formular Min-Wert mit VBA

    in Microsoft Access Hilfe
    NACH Filter im Formular Min-Wert mit VBA: Hallo Zusammen, ich habe ein Formular basierend auf Tabelle im Formular möchte ich mit VBA den Prozentwert einer Spalte angeben. hierzu benötige ich den Min-Wert dieser Spalte soweit bin ich...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden