Jag försöker räkna ut rest (på summan av två andra uträkningar, Label13 och Label15) dividerat med 7! Är väl parantes runt A + B i första uträkningen som saknas: Dim A As Double, B As Double För att ta det från start så visar jag lite mer kod! >Text1 = Text1.Text Ungefär sama som Svenpon svarade men kanske mer utvecklat Så detta vansinne med VB att man kan tolka det som står i Label1.Caption som Variant. Jag kom på vad du håller på med: Du vill bryta kodnycklar till program som distribuerats med Windows Installer eller hur???Uträkning med rest
Det blir bara tokuträkningar!
Vad är fel?
Koden:
Dim A As Double, B As Double
A = Label13.Caption
B = Label15.Caption
Fasttal3 = Fix(A + B / 7)
Label16.Caption = ((A + B) - (Fasttal3 * 7))Sv: Uträkning med rest
<code>
A = Label13.Caption
B = Label15.Caption
Fasttal3 = (A + B) \ 7
Label16.Caption = A + B - Fasttal3 * 7
</code>Sv: Uträkning med rest
A = Val(Label13.Caption)
B = Val(Label15.Caption)
'Här finns två möjligheter
Fasttal3 = Fix(A + B) / 7)
eller
Fasttal3 = Fix(A + (B / 7))
Label16.Caption = (A + B) - (Fasttal3 * 7)
Varför använder du Fix ??
Finns det kommatecken eller är det punkt som decimalavskiljare ?Sv: Uträkning med rest
Om du nu skriver 2000 i textboxen så ska Label8 bli 19, men det blir 20 och då blir efterföljande uträkningar också fel!
Vad är fel?
Också har jag bytt ut Fix mot Int:
Sub Text1_Change ()
Dim A As Double, B As Double
Text1 = Text1.Text
Label1 = Label1.Caption
Label9 = Label9.Caption
Label10 = Label10.Caption
Label2 = Label2.Caption
Label11 = Label11.Caption
Label3 = Label3.Caption
Label12 = Label12.Caption
Label4 = Label4.Caption
A = Label13.Caption
Label5 = Label5.Caption
Label7 = Label7.Caption
Label17 = Label17.Caption
Label14 = Label14.Caption
Label8 = Label8.Caption
B = Label15.Caption
Label6 = Label6.Caption
Label16 = Label16.Caption
Label1 = Text1 / 100
Fasttal1 = Int(Text1 / 19)
Label9 = (Text1 - Fasttal1 * 19) + 1
Label10 = Int(Label1) + 1
Label2 = (3 * Label10) / 4
Label11 = Int(Label2) - 12
Label3 = ((8 * Label10) + 5) / 25
Label12 = Int(Label3) - 5
Label4 = ((5 * Text1) / 4) - Label11 - 10
Label13 = Int(Label4)
Label5 = (11 * Label9) + 20 + Label12 - Label11
Fasttal2 = Int(Label5 / 30)
Label7 = (Label5 - Fasttal2 * 30)
If Label7 = 25 And Label9 > 11 Or Label7 = 24 Then
Label17 = "Sant"
Else
Label17 = "Falskt"
End If
If Label17 = "Falskt" Then
Label14 = Label7
Else
Label14 = Label7 + 1
End If
Label8 = 44 - Label7
If Label8 < 21 Then
Label15 = Label8 + 30
Else
Label15 = Label8
End If
Fasttal3 = Int((A + B) / 7)
Label6 = (A + B) - (Fasttal3 * 7)
Label16 = Label15 + 7 - Label6
End SubSv: Uträkning med rest
Label1 = Label1.Caption
Label9 = Label9.Caption
Label10 = Label10.Caption
Label2 = Label2.Caption
Vad är detta för soppa ? .Det är väl klart att Label1.Caption = Label1.Caption
Låter som du skall hålla till i Vb nybörjare. Försök förklara vad du vill göra.
Du skall inte ha din kod i Change det blir bara strul.Sv: Uträkning med rest
1. Fundera på VAD du vill åstadkomma
2. Fundera på HUR du skall göra
3. Därefter kan du börja programmeraSv: Uträkning med rest
Säkert en god tanke när man gjorde det så ,men det gör så stor skada på
nybörjare så det är helsjukt. Betrakta allt som står i en Label som Text !!!
Variant är en DataTyp som skall användas med stor eftertanke.
Samtidigt en repetion av Fix och Int. Fix behöver du bara använd när det förväntas negativa tal.
Ex Fix(-12.6) kommer att ge svar -12
Ex Int(-12.6) kommer att ge svar -13Sv: Uträkning med rest
Det tänker jag inte bidra till.
//Mikael.NET