Olen tekemässä pientä ja simppeliä työtuntien syöttöohjelmaa exceliin käyttäen activex-työkaluja.
Ongelmani on varmaan todella yksinkertainen, mutta en todellakaan ymmärrä mikä aihettaa seuraavan:
Dim aika As String
Private Sub CommandButton1_Click()
If (Range("D7") = "") Then
aika = InputBox("Syötä aloitusaika")
Range("D7") = aika
If (Range("E7") = "") Then
aika = InputBox("Syötä lopetusaika")
Range("E7") = aika
If (Range("F7") = "") Then
aika = InputBox("Syötä lounastauon pituus")
Range("F7") = aika
Else
If (Range("D8") = "") Then
aika = InputBox("Syötä aloitusaika")
Range("D8") = aika
If (Range("E8") = "") Then
aika = InputBox("Syötä lopetusaika")
Range("E8") = aika
If (Range("F8") = "") Then
aika = InputBox("Syötä lounastauon pituus")
Range("F8") = aika
End If
End If
End If
End If
End If
End If
End SubEli jostain syystä tuon Else-vaiheen jälkeen homma ei toimi.
Vaikka solu D8 on tyhjä, niin siltikää inputbox ei näyttäydy...
Kiitos etukäteen jo jos joku valaisee asian :)
Mod. lisäsi kooditagit. Ole hyvä ja lue ohjeet.
Voisit käyttää kooditageja ja järjellistä sisennystä, niin ongelma saattaisi ratketa kuin itsestään..
Tässä siis koodisi hieman selkeämmin esitettynä (en muuttanut mitään)
Dim aika As String
Private Sub CommandButton1_Click()
If (Range("D7") = "") Then
aika = InputBox("Syötä aloitusaika")
Range("D7") = aika
If (Range("E7") = "") Then
aika = InputBox("Syötä lopetusaika")
Range("E7") = aika
If (Range("F7") = "") Then
aika = InputBox("Syötä lounastauon pituus")
Range("F7") = aika
Else
If (Range("D8") = "") Then
aika = InputBox("Syötä aloitusaika")
Range("D8") = aika
If (Range("E8") = "") Then
aika = InputBox("Syötä lopetusaika")
Range("E8") = aika
If (Range("F8") = "") Then
aika = InputBox("Syötä lounastauon pituus")
Range("F8") = aika
End If
End If
End If
End If
End If
End If
End SubEli tuostahan näkee selvästi, että jos esim. D7 ei ole tyhjä, niin mitään ei tehdä. D8:n sisällöllä ei ole mitään merkitystä, ellei D7 ja E7 ole tyhjä ja F7 ei-tyhjä.
Olisit varmasti huomannut ongelman erittäin helposti ihan normaaleilla debuggausrutiineilla. Eli olisit laittanut vaikka ekalle riville breakpointin (F9) ja sitten hyppinyt rivi kerrallaan eteenpäin (F8), niin olisit huomannut kuinka suoritus menee heti viimeiseen end if:iin jos D7 ei ole tyhjä.
tai näin:
Dim aika As String
Private Sub CommandButton1_Click()
If (Range("D7") = "") Then
aika = InputBox("Syötä aloitusaika")
Range("D7") = aika
ElseIf (Range("E7") = "") Then
aika = InputBox("Syötä lopetusaika")
Range("E7") = aika
ElseIf (Range("F7") = "") Then
aika = InputBox("Syötä lounastauon pituus")
Range("F7") = aika
ElseIf (Range("D8") = "") Then
aika = InputBox("Syötä aloitusaika")
Range("D8") = aika
ElseIf (Range("E8") = "") Then
aika = InputBox("Syötä lopetusaika")
Range("E8") = aika
ElseIf (Range("F8") = "") Then
aika = InputBox("Syötä lounastauon pituus")
Range("F8") = aika
End If
End SubMod. lisäsi kooditagit.
Aihe on jo aika vanha, joten et voi enää vastata siihen.