Hallo und DANKE !
Es hat alles geklappt und alles läuft... DANKE DANKE DANKE!!!!
Gruß Werner
Holger schrieb am 22.01.2009 11:53:03:
Hallo Werner,
ich würde eine UserForm bilden, die 3 TextBoxen, 2 CommandButtons und ein großes Label1 hat. Für die
TextBoxen könntest du jeweils ein weitere Label2-4 verwenden, um dem anwender mitzuteilen, was er dort eingeben soll, z.B.:
Label2 für TextBox1: Nennwert oder absoluter Minimal- oder Maximalwert in mm
Label3 für TextBox2: absoluter Maximal- oder Minimalwert in mm oder erster Toleranzwert in mm oder µm
Label4 für TextBox2: ggf. zweiter Toleranzwert in mm oder µm
Die Ausgabe erfolgt in Label1 im mm.
CommandButton1 sei für die Berechnung und Speicherung
CommandButton2 für das Beenden.
Kleiner und größer musst du noch in die entsprechenden Zeichen umsetzen (im Forum entstehen bei der Übertragung dieser Zeichen immer wieder Fehler!) und für die Speicherzellen ist die Angabe der Zelladressen erforderlich.
Private Sub CommandButton1_Click()
Stop
a = TextBox1
b = TextBox2
c = TextBox3
If a kleiner größer "" Then a = CDbl(a) Else a = 0
If b kleiner größer "" Then b = CDbl(b) Else b = 0
If c kleiner größer "" Then c = CDbl(c) Else c = 0
If TextBox1 = "" Then Label1.Caption = "Nennwert oder Minimalwert eingeben!!!": Exit Sub
If TextBox2 kleiner größer "" And Abs(a - b) kleiner 0.05 And TextBox3 = "" Then
If a größer b Then d = a: a = b: b = d
Else
If b * c größer 0 Then
Label1.Caption = "Eine Toleranz muss positiv, die andere negativ sein!!!"
Exit Sub
End If
If b = 0 Or c = 0 Then
Label1.Caption = "Toleranzen können nicht Null sein!!!"
Exit Sub
End If
If Abs(b - c) größer 1 Then b = b / 1000: c = c / 1000
If b kleiner c Then d = b: b = c: c = d
b = a + b
a = a + c
End If
a = Format(a, "###0.000")
b = Format(b, "###0.000")
Label1.Caption = "Minimum: " + Format(a, "###0.000") + " mm" _
+ ", Maximum: " + Format(b, "###0.000") + " mm"
Cells(ZeileMinimum, SpalteMinimum) = a 'hier deine Werte für die Speicherzellen
Cells(ZeileMaximum, SpalteMaximum) = b 'eintragen, Zählung beginnt bei 1 für Spalte A
End Sub
Private Sub commandbutton2_click()
Unload UserForm3
End Sub
Gruß
Holger
Werner schrieb am 20.01.2009 20:30:41:
Hallo Holger
Danke danke…
Hilfe währe nicht schlecht, denn ich stehe jetzt vollständig auf dem Schlauch…
Das mit der Fallunterscheidung klingt gut. Ich verstehe aber leider nicht wie es gehen soll…
Hier noch x die unterschiedlichen Angaben die von unterschiedlichen Kunden gemacht werden:
Ein Kunde gibt nur den Nenndurchmesser mit einer +/- Toleranz an...
z.B. 6,000mm +0,001mm und -0,005mm
ein Kunde gibt nur den Max und den Min Durchmesser an...
z.B. 6,001mm / 6,005mm
einer gibt den Nenndurchmesser mit einer +/- Toleranz an...
z.B. 6,000mm +1µ / -5µ
Nach betätigen des Übernahme Buttons soll dann nur der Minwert 6,001 und der Maxwert 6,005mm in die Tabelle eingetragen werden.
Gruß
Werner
Holger schrieb am 20.01.2009 09:33:29:
Hallo Werner,
ich würde es mit einer logischen Fallunterscheidung versuchen, z.B.
3 Eingabefelder: A für Nennwert oder Minimal-/Maximalwert, B für Maximal-/Minimalwert oder ersten Toleranzwert, C für zweiten Toleranzwert
Wenn Abs(A-B) kleiner 0.01 und C leer sind, dann wurden Minimal- und Maximalwert eingegeben.
Wenn A nicht leer ist und Abs(B-C) kleiner 1 ist, dann wurden Nennwert und Toleranzen in mm angeben.
Wenn A nicht leer ist und Abs(B-C) größer 1 ist, dann wurden Nennwert und Toleranzen in mm angeben.
Sonst Eingabefehler
Falls die Logik zutrifft und du selbst nicht in der Lage bist, dein Programm so anzupassen, kann ich dir noch Hinweise geben.
Gruß
Holger
Werner schrieb am 19.01.2009 16:21:09:
Hallo und Danke an Holger....
Hast mir schon sehr gut geholfen.....
Eventuell kannst du mir noch einen Tipp geben....
es soll ein Eingabetool für Stiftdurchmesser werden.... Leider bekommen wir von unterschiedlichen Lieferanten unterschiedliche angaben...
einer gibt den Nenndurchmesser mit einer +/- Toleranz an... z.B. 6,000mm +0,001mm / -0,005mm
einer gibt den Max und den Min Durchmesser an... z.B. 6,001mm / 6,005mm
einer gibt den Nenndurchmesser mit einer +/- Toleranz an... z.B. 6,000mm +1µ / -5µ
Diese Angaben werden von Ungelernten Mittarbeitern in eine Excel Arbeitsmappe eingegeben und es werden leider sehr oft Fehler bei der Umstellung des Kommas gemacht.
Die Excel Arbeitsmappe arbeitet mit den Max und den Min Durchmesser 6,001mm / 6,005mm
Mit der Userform versuche ich die Fehleingaben zu reduzieren......
ich hoffe du kannst noch x helfen....
Option Explicit
Private NeuWert, Wert
Private Sub Userform1_initialize()
Wert = ""
End Sub
Private Sub anzeige()
Wert = Wert + NeuWert
If InStr((Wert), ".") Then
Label1.Caption = Format(Val(Wert), "###0.000")
Else
Label1.Caption = Format(Val(Wert))
End If
End Sub
Private Sub CommandButton1_Click() '1
NeuWert = "1"
anzeige
End Sub
Private Sub CommandButton10_Click() '0
NeuWert = "0"
anzeige
End Sub
Private Sub CommandButton11_Click() '.
NeuWert = "."
anzeige
End Sub
Private Sub CommandButton12_Click() ' del
Wert = ""
Label1.Caption = 0
End Sub
Private Sub CommandButton2_Click() '2
NeuWert = "2"
anzeige
End Sub
Private Sub CommandButton3_Click() '3
NeuWert = "3"
anzeige
End Sub
Private Sub CommandButton4_Click() '4
NeuWert = "4"
anzeige
End Sub
Private Sub CommandButton5_Click() '5
NeuWert = "5"
anzeige
End Sub
Private Sub CommandButton6_Click() '6
NeuWert = "6"
anzeige
End Sub
Private Sub CommandButton7_Click() '7
NeuWert = "7"
anzeige
End Sub
Private Sub CommandButton8_Click() '8
NeuWert = "8"
anzeige
End Sub
Private Sub CommandButton9_Click() '9
NeuWert = "9"
anzeige
End Sub
Private Sub Label1_Click()
Label1.Caption = Format(Wert, "###0.000")
End Sub
Danke
Gruß
Werner
Holger schrieb am 18.01.2009 16:08:24:
Hallo Werner,
es muss natürlich heißen:
sub anzeige
wert=wert+neuwert
if instr(wert),".") then
Label1.caption=Format(val(Wert), "###0.000")
else
Label1.caption=Wert
end if
end sub
Holger schrieb am 18.01.2009 15:55:19:
Hallo Werner,
Label1.caption=Format(Wert, "###0.000")
Wert ist nummerisch, das Ergebnis ist ein String. Beachte, dass du intern den Wert z.B. als String aufbauen kannst, aber das Komma intern als "." (Punkt) darstellen musst.
Ich nehme mal an, dass du eine Private-definierte Variable, z.B. NeuWert hast, in die du mit den Click-Ereignissen der Buttons den vorgesehenen Wert hinein schreibst.
Quick and dirty
Private NeuWert, Wert
sub Button1_Click()
NeuWert="1"
Anzeige
end sub
... Buttons 2-10
sub Button11_Click()
NeuWert="."
Anzeige
end sub
sub anzeige
wert=wert+neuwert
if instr(wert),".") then
Label1.caption=Format(Wert, "###0.000")
else
Label1.caption=Wert
end if
end sub
In der sub Userform1_initialize o.Ä. musst du Wert natürlich für eine neue Eingabe löschen (Wert="")
Gruß
Holger
Werner schrieb am 18.01.2009 10:47:44:
Hallo
noch ne Frage!
Komponenten!
Userform1 mit...
Button 1 (gibt Wert 1)
Button 2 (gibt Wert 2)
Button 3 (gibt Wert 3)
Button 4 (gibt Wert 4)
Button 5 (gibt Wert 5)
Button 6 (gibt Wert 6)
Button 7 (gibt Wert 7)
Button 8 (gibt Wert 8)
Button 9 (gibt Wert 9)
Button 10 (gibt Wert 0)
Button 11(gibt ,)
Button 12(speichert den Wert von Label1 in Tabelle 1)
Label1 ( Hier soll durch betätigen von Button 1-11 eine wert eingegeben werden. Der wert soll so formatiert sein das er immer 3 stellen hinter dem Komma hat. Sobalt das komma eingegben wird muss also der wert 3 stellen hinter dem Komma haben ....
Ausgabe immer in mm
Wenn 1 und 2 und , eingegeben wird soll --- 12,000 erscheinen
Wenn 1 und 2 und , und 3 eingegeben wird soll --- 12,300 erscheinen
Wenn1 und 2 eingegeben wir soll 0,012 erscheinen
Bitte helfen... es ist sehr wichtig und sehr dringend
Gruß
Werner
|