Onko Excelillä mahdollista ratkaista seuraava asia:
Oletuksena työkirjasta löytyy taulukko aukioloajalle 8-16. Jos käyttäjä tarvitseekin aukioloajaksi vain 8-14 ja syöttää tämän tiedon johonkin tietokenttään, kellonaikasarakkeet 14 ja 15 joko poistettaisiin tai sitten niihin soluihin ei voisi kirjoittaa mitään. Eli taulukko muokkaantuisi käyttäjän määrittelemän kellonajan mukaan?
Oletuksena työkirjasta löytyy taulukko aukioloajalle 8-16. Jos käyttäjä tarvitseekin aukioloajaksi vain 8-14 ja syöttää tämän tiedon johonkin tietokenttään, kellonaikasarakkeet 14 ja 15 joko poistettaisiin tai sitten niihin soluihin ei voisi kirjoittaa mitään. Eli taulukko muokkaantuisi käyttäjän määrittelemän kellonajan mukaan?
Vastaukset 3
Vanhimmat
Onnistuu kyllä, mutta suosittelen silti lopettamaan ne ruokalähettihommat ja menemään oikeisiin palkkatöihin.
Tehdään pieni esimerkki:
Lets leikitään että sinulla on solussa A2 aukiolo.
Solu on tekstimuotoiltu ja sisältää arvon '8-16
Soluissa E2-E9 on tuntinumerot 8, 9, 10,..., 14, 15
Maalataan alue E8:E9 -> Ehdollinen muotoilu/Uusi sääntö
Määritä kaavan avulla mitkä solut muotoillaan
Muotoile arvot joissa tämä kaava on tosi ->
=$A$2="8-14"
Muotoile -> Fontti/Väri (valkoinen) -> OK
Solun teksti muunnetaan valkoisessa solussa valkoiseksi
mikä ihmisen silmässä on sama kuin näkymätön.
Testataan kaavan toimivuutta muuttamalla solussa A2 olevaa
aukioloa '8-16 muotoon '8-14.
E-sarakkeen tunnit 14 ja 15 piiloutuu soluissa E8 ja E9.
Tämä ko. sivun moduliin:
Private Sub Worksheet_Change(ByVal Target As Range)
aukiolo = "$B$1" ' solu, johon aukioloaika kirjoitetaan
sarakkeet = "C:Z" ' mahdolliset tuntisarakkeet
aamu = 6 ' ensimmäisen sarakkeen aika
On Error GoTo Loppu:
Application.EnableEvents = False
Dim auki() As String
If Target.Address = aukiolo And Target.Count = 1 Then
auki = Split(Range(aukiolo), "-")
a = aamu
For Each sarake In Columns(sarakkeet)
sarake.EntireColumn.Hidden = (a < CInt(auki(0)) Or a >= CInt(auki(1)))
a = a 1
s = sarake.Column
Next
End If
Loppu:
Application.EnableEvents = True
End Sub