Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1340to1344
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

Hilfe Wichtig! Werte anzeigen

Hilfe Wichtig! Werte anzeigen
03.12.2013 09:38:10
Martin
Weiß einfach nicht mehr wieter.
In einer Userform muss man zuerst das Beplankungsmaterial, das Verbindungsmittel und den Verbindungsmitteldurchmesser eingeben.
Zum Schluß muss noch der Verbindungsmittelabstand eingegeben werden.
Dieser ist in einem von der Norm vorgegebenen Bereich. Diesen Bereich will ich mit Min und Max dem Benutzer anzeigen, damit sein Verbindungsmittelabstand innerhalb dieses Bereiches liegt. Dieser Bereich richtet sich aber nach den ersten drei Eingabewerten und ist keine feste Größe.
Ich hab aber keine Ahnung welches Sub ich verwenden soll bzw. wie ich das realisieren kann.
Als Idee und zur Verdeutlichung meines Problems:
If MaterialComboBox.Value = "Gipsplatten" Then
minTextBox.Value = 20 * DurchmesserComboBox.Value
If MaterialComboBox.Value "Gipsplatten" Then
minTextBox.Value = 0.85 * 15 * DurchmessserCombobox.Value
End If
End If
Hoffe mir kann jemand weiterhelfen, sonst kann ich nämlich meine komplette Userform nicht verwenden.
Martin

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfe Wichtig! Werte anzeigen
03.12.2013 09:58:08
EtoPHG
Hallo Martin,
Das hier ist ein Excel- und kein Gipser-Forum! ;-)
Darum kann auch niemand etwas mit deinem Beplankungsmaterialien, Gipsplatten u.a. anfangen! Versuche deine Problem so weit wie möglich zu abstrahieren! Regeln, als Formeln von Variablen zu definieren und/oder vielleicht in Link auf die Norm mitzuteilen, damit man sich ein Bild vom Problem machen kann.
Grundsätzlich enthalten TextBoxen Text , wie der Name schon sagt. Wenn du also mit deren Inhalten Rechnen willst, musst du den Text in eine Zahl umwandeln, z.B. mit Val(minTextBox).
Lade eine Beispielmappe hoch, in der du ausführlichere Informationen und den Stand deiner Bemühungen mitteilst.
Gruess Hansueli

Anzeige
AW: Hilfe Wichtig! Werte anzeigen
03.12.2013 11:54:01
Martin
https://www.herber.de/bbs/user/88356.xlsm
Das ist die sehr abgespeckte Version. Leider funktioniert jetzt der Rest auch nicht mehr, weil alle Verweise ungültig sind. Aber man kann sich leichter einen Überblick verschaffen über mein Problem.
In der Userform steht mein Problem jetzt ganz als erstes, um nicht suchen zu müssen.
Die Norm ist die DIN EN 1995-1-1, besser bekannt als Eurocode5 bzw. Holzbaunorm. Aber das bringt einen auch nicht weiter.
Martin

Korrektur der Syntax
03.12.2013 11:20:47
Rudi
Hallo,
das muss so aussehen:
If MaterialComboBox = "Gipsplatten" Then
minTextBox = 20 * DurchmesserComboBox
Else
minTextBox = 0.85 * 15 * DurchmessserCombobox
End If
Gruß
Rudi

Anzeige
AW: Korrektur der Syntax
03.12.2013 12:15:28
Martin
Rudi deine Antwort hat mich meinem Ziel ein bisschen näher gebracht.
1) Beim max-Wert sind die Bedingungen aber komplizierter und es klappt wieder nicht.
2) Der min bzw. max Wert wird in der Userform erst angezeigt wenn der Benutzer darauf klickt und nicht schon automatisch nachdem die Eingabe der 3 Werte (Beplankungsmaterial, Verbindungsmittel und Verbindungsmitteldurchmesser) erfolgte.
Private Sub max1TextBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim Durchmessser1Combobox As Integer
If Material1ComboBox = "Gipsplatten" And 60 * Durchmesser1ComboBox  150 Then
max1TextBox = 150
If 80 * Durchmesser1ComboBox 
Martin

Anzeige
Code im falschen Steuerelement,
03.12.2013 12:37:56
EtoPHG
Martin
So wie ich deinen Code verstehe, willst du den Inhalt von Min/Max automatisch füllen und nicht von einer Eingabe abhängig machen. Also verändere deren Inhalt bei:

Private Sub Durchmesser1ComboBox_Change()
If Material1ComboBox = "" Then Exit Sub
If Material1ComboBox = "Gipsplatten" Then
min1TextBox = 20 * Val(Durchmesser1ComboBox)
Else
min1TextBox = 0.85 * 15 * Val(Durchmesser1ComboBox)
End If
End Sub
Private Sub Material1ComboBox_Change()
If Val(Durchmesser1ComboBox) = 0 Then Exit Sub
If Material1ComboBox = "Gipsplatten" Then
min1TextBox = 20 * Val(Durchmesser1ComboBox)
Else
min1TextBox = 0.85 * 15 * Val(Durchmesser1ComboBox)
End If
End Sub
Gruess Hansueli

Anzeige
AW: Code im falschen Steuerelement,
03.12.2013 13:55:55
Martin
Hansueli das die min + max Werte sofort ausgegeben werden ist genau des was ich will. Bloß ich weiß nicht wie ich das weiter verschachteln kann.
z.B. müsste 20 * Val(Durchmesser1ComboBox) nur genommen werden, wenn das Ergebnis daraus größer als 60 und kleiner als 150 ist.
Aber schon enmal einen Schritt weiter.
Martin

Wenn du die Regeln nicht beschreiben...
03.12.2013 15:17:30
EtoPHG
kannst, Martin,
wie soll man dir dann Hilfestellung geben?
Kannst du die Regeln und Arithmetik dahinter verbal beschreiben?
Statt einer komplizierten IF-Verschachtelung, hilft oft das Einsetzen der Select Case-Anweisung.
Gruess Hansueli

Anzeige
AW: Wenn du die Regeln nicht beschreiben...
03.12.2013 16:28:37
Martin
Auszug aus der DIN: d = Durchmesser
Für Min:
Bei Gipsplatten ist der Mindestnagelabstand mit 20*d anzunehmen.
Bei anderen Beplankungsmaterialien ist der Mindestnagelabstand mit 0,85*15*d zu berechnen.
Für Max:
Bei Gipsplatten darf der größte Abstand 60*d, höchstens jedoch 150mm, betragen.
Bei anderen Beplankungsmaterialien ist ein Abstand bis 80*d, höchstens jedoch 150mm zulässig.
Ich häng halt an der if-Verschachtelung, wahrscheinlich weil ich in Excel damit am ehesten die Probleme bisher gelöst habe. Das ist mein erstes VBA, sorry.
Hoffe die Bedingungen sind leichter verständlich.
Martin

Anzeige
Dann probier mal
03.12.2013 17:20:18
EtoPHG
Martin,
Lösche all deinen Berechnungs-Codes und hau diesen Code zusätzlich in die UF
Private Sub Durchmesser1ComboBox_Change()
If Material1ComboBox = "" Then Exit Sub
BerechneMinMax
End Sub
Private Sub Material1ComboBox_Change()
If Val(Durchmesser1ComboBox) = 0 Then Exit Sub
BerechneMinMax
End Sub
Sub BerechneMinMax()
If Material1ComboBox = "Gipsplatten" Then
min1TextBox = 20 * Val(Durchmesser1ComboBox)
max1TextBox = Application.Min(150, (60 * Val(Durchmesser1ComboBox)))
Else
min1TextBox = 0.85 * 15 * Val(Durchmesser1ComboBox)
max1TextBox = Application.Min(150, (80 * Val(Durchmesser1ComboBox)))
End If
End Sub
Gruess Hansueli

Anzeige
AW: Dann probier mal
03.12.2013 17:47:06
Martin
Hansueli Vielen Vielen Dank es funktioniert. Da hast du meine ganze VBA-Sache gerettet. Ohne die Min/Max- Werte hätte ich es nicht benutzen können.
Klingt jetzt, dumm noch eine extra Frage, aber wie kann ich die Werte noch auf ganze Zahlen runden?
Weil Abstand von 43,25mm sieht komisch aus und kenne auch keinen Zimmermann der so genau arbeitet.
Wirklich Vielen Dank für die Lösung.
Martin

Mit einfachem Runden ...
03.12.2013 18:52:21
EtoPHG
geht das so, Martin
Sub BerechneMinMax()
If Material1ComboBox = "Gipsplatten" Then
min1TextBox = Int(20 * Val(Durchmesser1ComboBox) + 0.5)
max1TextBox = Int(Application.Min(150, (60 * Val(Durchmesser1ComboBox))) + 0.5)
Else
min1TextBox = Int(0.85 * 15 * Val(Durchmesser1ComboBox) + 0.5)
max1TextBox = Int(Application.Min(150, (80 * Val(Durchmesser1ComboBox))) + 0.5)
End If
End Sub
Gruess Hansueli

Anzeige
AW: Mit einfachem Runden ...
03.12.2013 19:15:43
Martin
Danke Hansueli,
ich kann das Danke eigentlich nicht oft genug schreiben.
Heute hab ich viel von dir gelernt.
Martin

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige