Det är så att jag har ett problem jag inte kan lösa. Att värdena beräknas säger inte så mycket. Så här ser min kod ut Pröva med att lägga till följande lilla kodsnutt till det du redan har: Detta kommer fungera när du lämnar kontrollen. MAn bör inte beräkna på ett tal i change eventet eftersom detta förändras medans man skriver in det. Validate eventet inträffar när kontrollen förlorar focus.Hjälp
Jag har 8 st text boxar och en knapp, när jag trycker på knappen så slumpas det ett tal mellan 1 och 18, sedan tas två värden upp och beräknas i en sub och skrivs ut i en ytterligare en text box
Mitt problem är att om jag vill gå in och ändra nummrerna i de första 8 text boxarna så vet jag inte hur jag ska göra för att de ska beräknas och skrivas ut i den sista textboxen.
Jag hoppas ni fattar vad jag menar
KenaSv: Hjälp
Litet exempel som kanske kan vara till hjälp:
<code>
Private Sub Calc()
Text4 = CDbl(Text1) + CDbl(Text2) + CDbl(Text3)
End Sub
Private Sub Command1_Click()
Text1 = Int(Rnd * 16) + 1
Text2 = Int(Rnd * 16) + 1
Text3 = Int(Rnd * 16) + 1
Calc
End Sub
Private Sub Text1_Validate(KeepFocus As Boolean)
If IsNumeric(Text1) Then
Calc
Else
MsgBox "Ange ett tal i Text1!"
KeepFocus = True
End If
End Sub
Private Sub Text2_AfterUpdate()
If IsNumeric(Text2) Then
Calc
Else
MsgBox "Ange ett tal i Text2!"
KeepFocus = True
End If
End Sub
Private Sub Text3_AfterUpdate()
If IsNumeric(Text3) Then
Calc
Else
MsgBox "Ange ett tal i Text3!"
KeepFocus = True
End If
End Sub
</code>Sv: Hjälp
Som ni ser slumpas en siffra ut till alla textboxarna, det jag nu vill kunna göra är att om man inte vill slumpa ska man kunna skriva in men ändå ska det räknas ut och skrivas in i txtFör. Jag tänkte mig tex använda händelsen change men jag får det inte att funka
<code>
'Deklarering av variabler
Dim bytSty As Byte
Dim bytTål As Byte
Dim bytRör As Byte
Dim bytPer As Byte
Dim bytPsy As Byte
Dim bytVil As Byte
Dim bytBil As Byte
Dim bytSyn As Byte
Dim bytHör As Byte
Public Sub cmdSlumpa_Click()
'Slumpa ut de olika attributen
txtSty.Text = Int((18 * Rnd) + 1)
txtTål.Text = Int((18 * Rnd) + 1)
txtRör.Text = Int((18 * Rnd) + 1)
txtPer.Text = Int((18 * Rnd) + 1)
txtPsy.Text = Int((18 * Rnd) + 1)
txtVil.Text = Int((18 * Rnd) + 1)
txtBil.Text = Int((18 * Rnd) + 1)
txtSyn.Text = Int((18 * Rnd) + 1)
txtHör.Text = Int((18 * Rnd) + 1)
'Initiera slumpsiffrorna till variabler
bytSty = txtSty.Text
bytTål = txtTål.Text
bytRör = txtRör.Text
bytPer = txtPer.Text
bytPsy = txtPsy.Text
bytVil = txtVil.Text
bytBil = txtBil.Text
bytSyn = txtSyn.Text
bytHör = txtHör.Text
Call sngFör(bytRör, bytTål)
End Sub
Private Sub sngFör(bytRör As Byte, bytTål As Byte)
Dim sngFör As Single
'Beräkning av Förflyttning (FÖR)
sngFör = (bytRör + bytTål + 10) / 4
'Skriver ut i textrutan txtFör
txtFör.Text = sngFör
End Sub
</code>Sv: Hjälp
Private Sub txtRör_Change()
If IsNumeric(txtRör.Text) And IsNumeric(txtTål.Text) Then
Call sngFör(txtRör, txtTål)
End If
End Sub
Private Sub txtTål_Change()
If IsNumeric(txtRör.Text) And IsNumeric(txtTål.Text) Then
Call sngFör(txtRör, txtTål)
End If
End Sub
/AndersSv: Hjälp
<code>
Private Sub txtRör_Validate(KeepFocus As Boolean)
If IsNumeric(txtRör) Then
txtFör.Text = sngFör(CLng(txtRör), CLng(txtTål))
Else
MsgBox "Ange ett tal för Rör!"
KeepFocus = True
End If
End Sub
Private Sub txtTål_Validate(KeepFocus As Boolean)
If IsNumeric(txtTål) Then
txtFör.Text = sngFör(CLng(txtRör), CLng(txtTål))
Else
MsgBox "Ange ett tal för Tål!"
KeepFocus = True
End If
End Sub
Public Sub cmdSlumpa_Click()
'Slumpa ut de olika attributen
txtSty.Text = Int((18 * Rnd) + 1)
txtTål.Text = Int((18 * Rnd) + 1)
txtRör.Text = Int((18 * Rnd) + 1)
txtPer.Text = Int((18 * Rnd) + 1)
txtPsy.Text = Int((18 * Rnd) + 1)
txtVil.Text = Int((18 * Rnd) + 1)
txtBil.Text = Int((18 * Rnd) + 1)
txtSyn.Text = Int((18 * Rnd) + 1)
txtHör.Text = Int((18 * Rnd) + 1)
'Skriver ut i textrutan txtFör
txtFör.Text = sngFör(CLng(txtRör), CLng(txtTål))
End Sub
Private Function sngFör(lngRör As Long, lngTål As Long) As Double
'Beräkning av Förflyttning (FÖR)
sngFör = (lngRör + lngTål + 10) / 4
End Sub
</code>