Attribute VB_Name = "Module1" Private Function HuonoNimenPituus(ByVal NsName As String) As Boolean Dim Ln As Long Dim Temp As Boolean Temp = False Ln = Len(NsName) If Ln = 0 Then Temp = True If Ln > 30 Then Temp = True HuonoNimenPituus = Temp End Function Private Function KiellettyMerkkiNimessa(ByVal Nw_Name As String) As Boolean Dim Lp As Long Dim Temp As Boolean Temp = False For Lp = 1 To Len(Nw_Name) If Mid(Nw_Name, Lp, 1) = "\" Then Temp = True If Mid(Nw_Name, Lp, 1) = "/" Then Temp = True If Mid(Nw_Name, Lp, 1) = "?" Then Temp = True If Mid(Nw_Name, Lp, 1) = "*" Then Temp = True If Mid(Nw_Name, Lp, 1) = "[" Then Temp = True If Mid(Nw_Name, Lp, 1) = "]" Then Temp = True Next Lp KiellettyMerkkiNimessa = Temp End Function Private Function NimiJoKaytossa(ByVal Nw_Name As String) As Boolean Dim Temp As Boolean Dim ShTot As Long Dim ShNow As Long Temp = False ShTot = Application.ActiveWorkbook.Sheets.Count For ShNow = 1 To ShTot If UCase(ActiveWorkbook.Sheets(ShNow).Name) = UCase(Nw_Name) Then Temp = True Next ShNow NimiJoKaytossa = Temp End Function Private Sub MuutaSivunNimi() 'MuutaSivunNimi-aliohjelmassa kysytään (rivi 2) yksinkertaisella InputBox-funktiolla sivulle uusi nimi. 'Tämän jälkeen annettu nimi ajetaan kaikkien kolmen tarksitusfunktion läpi ehtolauseessa rivillä 3. 'Jos yksikin tarkistusfunktio palauttaa arvon True, ehtolause toteutuu. 'Tällöin ehdotettu nimi ei ole ollut kelvollinen, joten asiasta ilmoitetaan käyttäjälle (rivi 4). 'Jos sen sijaan kaikki tarkistusfunktiot palauttavat arvon False, ehto ei toteudu ja kontrolli pääsee muuttamaan taulukkosivun nimen (rivi 6). 'Tässä on käytetty siis jossain määrin poissulkevaa tai käänteistä logiikkaa. 'Aivan yhtä hyvin funktiot olisi voinut kirjoittaa täsmäälleen toisinpäin. 'Tällöin esimerkiksi NimiJoKaytossa-funktion nimi olisi voitu muuttaa vaikka NimiVielaVapaa-funktioksi ja se palauttaisi False siinä tapauksessa, että nimi olisi jo käytössä työkirjassa. 1 Dim TempNimi As String 2 TempNimi = InputBox("Uusi taulukkosivun nimi:") 3 If NimiJoKaytossa(TempNimi) Or HuonoNimenPituus(TempNimi) Or KiellettyMerkkiNimessa(TempNimi) Then 4 MsgBox "Nimeä ei muutettu" 5 Else 6 ActiveSheet.Name = TempNimi 7 End If End Sub Private Sub MuutaSivunNimi_Versio2() 'Tässä toinen versio pääohjelmaksi Dim TarkOk As Boolean Dim TempNimi As String Dim IlmoitusS As String TarkOk = True TempNimi = InputBox("Uusi taulukkosivun nimi:") If NimiJoKaytossa(TempNimi) Then TarkOk = False IlmoitusS = "Nimi oli jo käytössä" & Chr(10) End If If HuonoNimenPituus(TempNimi) Then TarkOk = False IlmoitusS = IlmoitusS & "Nimen pituus 1-30 merkkiä" & Chr(10) End If If KiellettyMerkkiNimessa(TempNimi) Then TarkOk = False IlmoitusS = IlmoitusS & "Nimessä kielletty merkki" & Chr(10) End If If TarkOk Then ActiveSheet.Name = TempNimi IlmoitusS = IlmoitusS & "Nimi vaihdettu" & Chr(10) Else IlmoitusS = IlmoitusS & "Nimeä ei vaihdettu" & Chr(10) End If MsgBox IlmoitusS End Sub