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 Sub
Eli 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 Sub
Eli 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 Sub
Mod. lisäsi kooditagit.
Aihe on jo aika vanha, joten et voi enää vastata siihen.