Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1648to1652
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
Inhaltsverzeichnis

UserForm

UserForm
26.09.2018 22:52:46
Brigitte
https://www.herber.de/bbs/user/124255.xlsm
Hallo Forum,
ich bin immer noch dabei fleißig meine Lektionen in VBA abzuarbeiten. jedoch gewinne ich den Eindruck, je mehr ich versuche zu lernen, um so weniger weiß ich.
Nebenbei bearbeite ich zum Üben meine UserForm. Ich hänge bei der Dreiecksberechnung bzw. bei der Prüfung der verschiedenen Bedingungen. Hier habe ich einen Hänger bzw. ich habe überhaupt keinen Lösungsansatz.
1. wird geprüft ob die TextBoxen für die Seiten a bis c einen numerischen Wert enthalten und ob dieser größer NULL ist.
2. wird geprüft ob die TextBoxen für die Seiten a bis c leer sind.
3. wird geprüft ob die Bedingungen zur Erstellung eines Dreiecks gegeben sind
Dann erfolgt eine Prüfung, ob das Textfeld für die Höhe mit einer positiven Zahl gefüllt ist. Wenn das der fall ist, wird nach der Flächenformel für das Dreieck berechnet. Wenn nicht erfolgt ein Hinweis, dass die Höhe nach Heron von Alexandria berechnet wird.
Nun zu meinem Problem.
Wie kann ich verhindern, dass eine utopische Angabe für die Höhe eingetragen wird? Wie kann ich das abfangen?
Ich bin weder Mathematikerin noch bin ich VBA-erfahren um dieses Problem zu lösen.
Kann mir jemand helfen?
Ach und so nebenbei, bei meiner Berechnung für den Umfang des Dreiecks, wird immer nur eine ganze Zahl zur Berechnung herangezogen und auch angezeigt. Was ist hier nicht in Ordnung.
Danke für Eure Bemühungen und
Grüße aus dem Urlaub
Brigitte

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm
27.09.2018 08:14:43
fcs
Hallo Brigitte,
Nun zu meinem Problem.
Wie kann ich verhindern, dass eine utopische Angabe für die Höhe eingetragen wird? Wie kann ich das abfangen?
Wenn du die Seitenlangen a, b und c eingibst, dann ist das Dreieck bereits bestimmt. Die Höhe muss dann aus diesen Werten berechnet werden.
Außerdem musst du bedenken, das ein Dreieck 3 Höhen hat. Deshalb stimmt deine Berechnungsformel für die Fläche mit der Höhe nicht immer.
Wenn du a, b, c und h als Werte fürs Dreieck vorgeben möchtest, dann dürfen immer nur 3 dieser Werte eingegben werden, sonst ist das Dreieck überbestimmt.
Ach und so nebenbei, bei meiner Berechnung für den Umfang des Dreiecks, wird immer nur eine ganze Zahl zur Berechnung herangezogen und auch angezeigt. Was ist hier nicht in Ordnung.

Zur Umwandlung der Textboxen-Inhalte in Zahlen verwendest du die Funktion Val, das produziert ganze Zahlen.
Du muss die Funktion CDbl für die Umwandlung verwenden.
        'Wenn eine Eingabe erfolgt ist, Variablen für die Inhalte der TextBoxen A bis C  _
festlegen
A = CDbl(frmBerechnungen.TextBoxA.Value) 'Variable für die Seite a
B = CDbl(frmBerechnungen.TextBoxB.Value) 'Variable für die Seite b
C = CDbl(frmBerechnungen.TextBoxC.Value) 'Variable für die Seite c

Bei Berechnung von größte Seitenlänge muss du Val weglassen.

dblMax = Val(WorksheetFunction.Max(A, B, C)) ' größte Seitenlänge festlegen
'ändern in
dblMax = WorksheetFunction.Max(A, B, C) ' größte Seitenlänge festlegen
LG
Franz
Anzeige
AW: UserForm
27.09.2018 09:04:44
Brigitte
Hallo Franz,
vielen Dank für deine Unterstützung. Jetzt werden auch die korrekten Ergebnisse angezeigt. Super.
Gibt es auch eine Lösung um die Höheneingabe zu beschränken?
Mein Gedanke ist, im Hintergrund die Höhe zu berechnen (mit den Angaben der drei Seiten) und wenn diese Berechnung mit der Eingabe übereinstimmt, wird der Eintrag akzeptiert. Wie könnte man so etwas umsetzen? Wie verhält es sich mit den Rundungsdifferenzen?
Ist so eine Prüfung überhaupt möglich?
Hat jemand von den "Profis" einen Lösungsansatz?
Danke
Brigitte
Nicht alle Empfehlungen / Lösungen von Helfern
27.09.2018 11:06:39
Helfern
sind wirklich hilfreich, Brigitte
Ich mag mich erinnern, dass du CDbl(Textbox) Umwandlungen schon mal implementiert hast.
Auf eine Empfehlung von onur hast du das zu Val(Textbox) geändert.
Das hat dann vorübergehend funktioniert, weil du vielleicht nur noch mit ganzen Zahlen in den Textboxen experimentiert hast und Gleitkommazahlen nicht mehr getestet hast.
Also macht dir einen Plan, was soll erlaubt sein, was nicht (siehe meinen Post unten). Generisch: alle Eingabewerte sollen Gleitkommazahlen grösser 0 sein. Alle Ausgabewerte können Gleitkommazahlen sein.
Sonst machst du Schritte vorwärts, aber in die falsche Richtung...und dann wieder von vorne ;-)
Gruess Hansueli
Anzeige
AW: UserForm
27.09.2018 23:33:22
fcs
Hallo Brigitte,
ich nehme mal an, dass du hier mit Höhe immer die Höhe über der Seite c meinst.
Userbild
Für die Höhe über Seite c gilt.
h &gt 0 UND h &lt= a UND h &lt = b
wenn h (Schätzwert) eingegeben wird dann kannst du nach dem Berechnen der Werte zum Beispiel berechnen wie stark (Prozent) der Schätzwert vom Ergebnis abweicht.
LG
Franz
AW: UserForm
27.09.2018 10:47:56
EtoPHG
Hallo Brigitte,
Ich verfolge deine Posts schon eine Weile, hab mir allerdings deine 'neue' Datei nicht wieder runtergeladen. Ich möchte nur ein paar allgemeine Anmerkungen machen. Es widerspiegeln sich auch in deiner erneuten Frage:
Wenn Bedingung 1 wahr ist (a>0,b>0,c>0) dann erübrigt sich Bedingung 2!
Jetzt kommt plötzlich h ins Spiel. Warum? Es gibt in einem 'allgemeinen' Dreieck 3 verschiedene h.
Das Problem liegt darin, dass du alle 4 (a,b,c und h) einzugeben erlaubst. Zur Berechnung der verschiedenen Resultate sind aber nur genau 3 Variablen (Kombinationen aus Seitenlängen, Höhen, Winkeln) nötig, damit erhälts du 84 mögliche Kombinationen. Das in VBA umzusetzen ist möglich kann aber je nach Ansatz (v.a. in der Lernphase von VBA) zu riesigem Spaghetti-Code führen. Bei deinem Einsatz einer Userform kommen jetzt noch deren Eigenheiten dazu und du verlierst dich gezwungenermaßen in Einzelproblemen. Ein typisches Beispiel äussert sich in der Auswahl WAS berechnet werden soll. Du setzt dazu Checkboxen ein, was die völlig falsche Wahl eines Steuerelements ist, da ja nur genau eine Wahl möglich sein soll. Würdest du anstelle der Checkboxes, Optionbuttons einsetzen, würde dein Code schon bezgl. Ein-/Ausblenden einfacher werden. Noch besser wäre eine ComboBox mit genau einer möglichen Auswahl. In der Combobox könnte dann in zusätzlichen (nicht angezeigten) Spalten auch die erforderlichen Kombinationen zur Anzeige von Parameter-Abfragen (Textboxen) stehen.
Empfehlungen für Dich:
Du hast angefangen mit Bildchen (Lämpel, Dreieck, Viereck...) etc. und bist dort schon an Grenzen gestossen. Diese Art ist typisch für Anfänger: Es muss schön aussehen, trägt aber absolut nichts zur Funktionalität bei! Spar dir Schönheit für den Schluss auf! Ich weiss, Eindruck will man von Anfang schinden ;-) Bringt aber nix, ausser Zeitverschwendung.
Jetzt hängst du am Dreieck. Das ist das einfachste Polygon. Nun kannst du dir vorstellen, was noch für Probleme auf dich zukommen. Vor allem beim Vieleck!
Denke viel generischer: Nicht speziell (Dreieck, Viereck...) sondern von allgemein zu speziell (Polygon, Ableitungen (wie 17eck, 8eck,Viereck, Dreieck-..).
Programmierung und dein Problem (Geometrische Berechnungen) hat viel mit dem Verständnis von Mathematik zu tun. Dazu hilft vielleicht eine Literaturempfehlung: How to solve it
Gruess Hansueli
Anzeige
AW: UserForm
27.09.2018 17:02:03
Brigitte
Hallo EtoPHG,
vielen Dank für deine konstruktive Kritik, die ich mir zu Herzen nehmen werde.
Das Verlieren in die Einzelheiten scheint bei mir das Problem zu sein. Ich will einfach zu schnell zu viel.
Ich werde versuchen mich zurückzunehmen und deine Ratschläge befolgen. Deine Literaturempfehlung werde ich mir auch besorgen.
Ich werde bemüht sein, mich wie ein vernünftiger Anfänger zu benehmen und mein Projekt erst mal auf Eis legen.
Bei weiteren Problemen und Fragen werde ich mich weiter an dieses tolle Forum wenden.
Danke noch einmal für den Schubser in die richtige Richtung
Brigitte
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige