Solun ehdollinen lukitus?

Tumpelo

Kuka osaisi neuvoa miten saisin excelissä solun lukittua kun käyttäjä syöttää siihen tietyn arvon? Muussa tapauksessa tulisi kehoitus korjata.

Sen verran osaan tehdä, että jos vaikka soluun A1 syöttää jotain, tulee esim. soluun A2 korjauskehoitus tai jos se vastaa syötettä, siihen tulee OK, mutta pitäisi siis se solu A1 saada lukittua ettei enää muuteta jos meni oikein.

Jollain makrolla kai(?), mutta se on meikäläiselle niin vaikeaa...

12

1644

    Vastaukset 12

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • taulukon moduuliin..
      poista lukitus taulukon soluista ja muuta solun nimi, salasana ja haluttu arvo sopivaksi

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      On Error Resume Next
      If Not Intersect(Target, Range("A1")) Is Nothing Then
      With ActiveSheet
      .Unprotect Password:="Kunde"
      If Range("A1") = 1 Then
      Target.Locked = True
      Else
      MsgBox " Anna solun arvoksi 1"
      End If
      .Protect Password:="Kunde"
      End With
      End If
      End Sub

      • oikea koodi
        Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        On Error Resume Next
        If Not Intersect(Target, Range("A1")) Is Nothing Then
        With ActiveSheet
        .Unprotect Password:="Kunde"
        If Range("A1") = 1 Then
        Target.Locked = True
        .Protect Password:="Kunde"
        Else
        MsgBox " Anna solun arvoksi 1"
        Range("A1").Select
        End If
        End With
        End If
        End Sub


      • Tumpelo (siis tosi tumpelo...)
        kunde kirjoitti:

        oikea koodi
        Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        On Error Resume Next
        If Not Intersect(Target, Range("A1")) Is Nothing Then
        With ActiveSheet
        .Unprotect Password:="Kunde"
        If Range("A1") = 1 Then
        Target.Locked = True
        .Protect Password:="Kunde"
        Else
        MsgBox " Anna solun arvoksi 1"
        Range("A1").Select
        End If
        End With
        End If
        End Sub

        mutta en saa tätäkään toimimaan - ongelmani on kai että miten saan tuon moduulin aktivoitumaan kun käyttäjä menee kyseiseen soluun? Ei tapahdu mitään ja voin kirjoittaa soluun mitä vain eikä tapahdu mitään.
        Makrot olen sallinut. Minulla on Excel 2007.


      • Tumpelo (siis tosi tumpelo...) kirjoitti:

        mutta en saa tätäkään toimimaan - ongelmani on kai että miten saan tuon moduulin aktivoitumaan kun käyttäjä menee kyseiseen soluun? Ei tapahdu mitään ja voin kirjoittaa soluun mitä vain eikä tapahdu mitään.
        Makrot olen sallinut. Minulla on Excel 2007.

        olet laittanut koodin tavalliseen moduuliin, kun se pitää olla sen taulukon moduulissa, missä haluat lukutksen tapahtuban. Siis TAULUKON MODUULIIN...


      • se taulukon moduuli?
        kunde kirjoitti:

        olet laittanut koodin tavalliseen moduuliin, kun se pitää olla sen taulukon moduulissa, missä haluat lukutksen tapahtuban. Siis TAULUKON MODUULIIN...

        Siis kun menen Kehitystyökalut / Visual basic / insert / niin mitä sitten - vai onko väärä reitti? Siell on joko inset module tai class module, ei auta.
        Yhtä eksyksiin päädyn jos menen Nauhoita makro-nappulan kautta, sitten pitäisi valita pikanäppäin ja tämän pitäisi siis aktivoitua kun käyttäjä menee tähän taulukkoon.

        Eli minulla ei ole tämä terminologia hallussa :(


      • se taulukon moduuli? kirjoitti:

        Siis kun menen Kehitystyökalut / Visual basic / insert / niin mitä sitten - vai onko väärä reitti? Siell on joko inset module tai class module, ei auta.
        Yhtä eksyksiin päädyn jos menen Nauhoita makro-nappulan kautta, sitten pitäisi valita pikanäppäin ja tämän pitäisi siis aktivoitua kun käyttäjä menee tähän taulukkoon.

        Eli minulla ei ole tämä terminologia hallussa :(

        tapa 1
        taulukkovalitsimesta klikkaa haluttu taulukko ja hiiren oikealla klikkaat ko taulukon valitsimmessa ja avautuvasta valikosta View Code/Näytä koodi. Avautuvaan moduuliin sitten liität koodin...

        tapa 2
        taulukkopuolella näppäinyhdistelmä CTRL F11 ja vasemmalta Projektinhallinnasta tuplaklikkaat haluamaasi taulukkomoduulia.
        Varmista, että on oikea projekti laajennettuna (- merkki projektin edessä), jos siinä on -merkki niin laajenna projekti klikkaamalla merkkiä. Seuraavaksi pitäisi Microsoft Excel Objects olla näkyvissä ja jos ei ole niin toista ylläoleva. Nyt sieltä löytyy taulukkomoduulit tyyliin Sheet1 (Koe), missä eka on VBA koodissa käytettävä nimi, joka voidaan vaihtaa ominaisuuksista ja suluissa on taulukon nimi, joka näkyy taulukkovalitsimessa.
        No nyt tuplaklikkaat sitten haluamaasi taulukkoa ja liität koodin sinne.
        Kyllä koodin nyt pitäisi toimia...


      • ei ollut vaikeaa
        kunde kirjoitti:

        tapa 1
        taulukkovalitsimesta klikkaa haluttu taulukko ja hiiren oikealla klikkaat ko taulukon valitsimmessa ja avautuvasta valikosta View Code/Näytä koodi. Avautuvaan moduuliin sitten liität koodin...

        tapa 2
        taulukkopuolella näppäinyhdistelmä CTRL F11 ja vasemmalta Projektinhallinnasta tuplaklikkaat haluamaasi taulukkomoduulia.
        Varmista, että on oikea projekti laajennettuna (- merkki projektin edessä), jos siinä on -merkki niin laajenna projekti klikkaamalla merkkiä. Seuraavaksi pitäisi Microsoft Excel Objects olla näkyvissä ja jos ei ole niin toista ylläoleva. Nyt sieltä löytyy taulukkomoduulit tyyliin Sheet1 (Koe), missä eka on VBA koodissa käytettävä nimi, joka voidaan vaihtaa ominaisuuksista ja suluissa on taulukon nimi, joka näkyy taulukkovalitsimessa.
        No nyt tuplaklikkaat sitten haluamaasi taulukkoa ja liität koodin sinne.
        Kyllä koodin nyt pitäisi toimia...

        Kun tietää mitä tekee....

        Taitaapa toimia :=)

        Kiitos kun jaksat meitä Tumpeloita neuvoa. Yliopisto säästäisi pitkän pennin jos järjestäisi henkilökunnalle kunnon excel-kursseja, muttakunei. Opetellaan vaan yhteenlaskua ja talukoiden avaamista.


      • Tumpelo
        kunde kirjoitti:

        tapa 1
        taulukkovalitsimesta klikkaa haluttu taulukko ja hiiren oikealla klikkaat ko taulukon valitsimmessa ja avautuvasta valikosta View Code/Näytä koodi. Avautuvaan moduuliin sitten liität koodin...

        tapa 2
        taulukkopuolella näppäinyhdistelmä CTRL F11 ja vasemmalta Projektinhallinnasta tuplaklikkaat haluamaasi taulukkomoduulia.
        Varmista, että on oikea projekti laajennettuna (- merkki projektin edessä), jos siinä on -merkki niin laajenna projekti klikkaamalla merkkiä. Seuraavaksi pitäisi Microsoft Excel Objects olla näkyvissä ja jos ei ole niin toista ylläoleva. Nyt sieltä löytyy taulukkomoduulit tyyliin Sheet1 (Koe), missä eka on VBA koodissa käytettävä nimi, joka voidaan vaihtaa ominaisuuksista ja suluissa on taulukon nimi, joka näkyy taulukkovalitsimessa.
        No nyt tuplaklikkaat sitten haluamaasi taulukkoa ja liität koodin sinne.
        Kyllä koodin nyt pitäisi toimia...

        Kiitos, Kunde kärsivällisistä neuvoista. Vielä on ihmeteltävää - tapahtuu nimittäin eri aisoita riippuen suojaanko taulukon sekä työkirjan rakenteen samalla vai eri salasanalla kuin vba-koodissa:

        Kun nimittäin suojaan taulukon, niin en saa suojattua koodia ja solusuojauksissakin on edelleen ihmeteltävää. Kyseessä on siis taulu, jossa käyttäjä liikku tabuloimalla niissä soluissa joita hänen on tarkoitus muuttaa, muut on lukittu. Yksi solu on sellainen, että se lukittuu kun siihen syötetään haluttu arvo.

        Suojaus eri salasanalla:
        Syöte oikein: taulukko pysyy lukittuna, mutta kyseinen solu ei lukitu kuten piti
        Syöte väärin: kuten edellä
        Suojaus samalla salasanalla:
        Syöte oikein: kaikkien solujen lukitukset poistuvat ja lukittuvat, kyseinen solu mukaan lukien, vasta kun kyseiseen soluun mennään toisen kerran
        Syöte väärin: Kuten edellä
        Kaikissa tapauksissa Näytä koodi –toiminto on käytettävissä koko ajan klikkaamalla hiiren oikealla nappulalla taulukonvalitsinta ja silloin pääsee koodia siis ropeloimaan ilman mitään salasanakyselyjä

        Neuvoista taas kiitollinen :)


      • Tumpelo kirjoitti:

        Kiitos, Kunde kärsivällisistä neuvoista. Vielä on ihmeteltävää - tapahtuu nimittäin eri aisoita riippuen suojaanko taulukon sekä työkirjan rakenteen samalla vai eri salasanalla kuin vba-koodissa:

        Kun nimittäin suojaan taulukon, niin en saa suojattua koodia ja solusuojauksissakin on edelleen ihmeteltävää. Kyseessä on siis taulu, jossa käyttäjä liikku tabuloimalla niissä soluissa joita hänen on tarkoitus muuttaa, muut on lukittu. Yksi solu on sellainen, että se lukittuu kun siihen syötetään haluttu arvo.

        Suojaus eri salasanalla:
        Syöte oikein: taulukko pysyy lukittuna, mutta kyseinen solu ei lukitu kuten piti
        Syöte väärin: kuten edellä
        Suojaus samalla salasanalla:
        Syöte oikein: kaikkien solujen lukitukset poistuvat ja lukittuvat, kyseinen solu mukaan lukien, vasta kun kyseiseen soluun mennään toisen kerran
        Syöte väärin: Kuten edellä
        Kaikissa tapauksissa Näytä koodi –toiminto on käytettävissä koko ajan klikkaamalla hiiren oikealla nappulalla taulukonvalitsinta ja silloin pääsee koodia siis ropeloimaan ilman mitään salasanakyselyjä

        Neuvoista taas kiitollinen :)

        VBA editorin puolella valitse valikoista
        Tools/VBAProject Properties -avautuu lomake ja siitä klikkaa Protection välilehti ja täppä kohtaa Lock Project for viewing ja salasanan kirjoitat pariin kertaa ja OK. Tallenna työkirja ja avaa uudelleen nyt koodit näkyvät vain salasanalla.

        Muutin koodin solunmuutos tapahtumaan...
        koodissa salasana on oltava sama kuin taulukon suojaus salasana.

        Private Sub Worksheet_Change(ByVal Target As Range)
        On Error Resume Next
        If Not Intersect(Target, Range("A1")) Is Nothing Then
        With ActiveSheet
        .Unprotect Password:="Kunde"
        If Range("A1") = 1 Then
        Target.Locked = True

        Else
        MsgBox " Anna solun arvoksi 1"
        Range("A1").Select
        End If
        .Protect Password:="Kunde"
        End With
        End If
        End Sub


      • Tumpelo
        kunde kirjoitti:

        VBA editorin puolella valitse valikoista
        Tools/VBAProject Properties -avautuu lomake ja siitä klikkaa Protection välilehti ja täppä kohtaa Lock Project for viewing ja salasanan kirjoitat pariin kertaa ja OK. Tallenna työkirja ja avaa uudelleen nyt koodit näkyvät vain salasanalla.

        Muutin koodin solunmuutos tapahtumaan...
        koodissa salasana on oltava sama kuin taulukon suojaus salasana.

        Private Sub Worksheet_Change(ByVal Target As Range)
        On Error Resume Next
        If Not Intersect(Target, Range("A1")) Is Nothing Then
        With ActiveSheet
        .Unprotect Password:="Kunde"
        If Range("A1") = 1 Then
        Target.Locked = True

        Else
        MsgBox " Anna solun arvoksi 1"
        Range("A1").Select
        End If
        .Protect Password:="Kunde"
        End With
        End If
        End Sub

        Toimii ja ei toimi. Eli kun tein tuon ensimmäisen kerran niin tuntui ensin että pelasi kuten piti. Mutta sitten aloin "leikkiä" tällä ja havaitsin:
        1. Makro ei aktivoidu kun menee siihen soluun, missä piti näin olla, MUTTA se aktivoituu kun tuhoan siihen pistämäni syötteen
        2. Solu ei lukitu, mutta muut solut, jotka ovat alunperinkin lukittuja, pysyvät lukittuina kuten tarkoitus on

        Vaikuttaako se että tämä on excel 2007? Jotenkin epävarman tuntuisia nämä excelin makrot ja suojaukset.


      • Tumpelo kirjoitti:

        Toimii ja ei toimi. Eli kun tein tuon ensimmäisen kerran niin tuntui ensin että pelasi kuten piti. Mutta sitten aloin "leikkiä" tällä ja havaitsin:
        1. Makro ei aktivoidu kun menee siihen soluun, missä piti näin olla, MUTTA se aktivoituu kun tuhoan siihen pistämäni syötteen
        2. Solu ei lukitu, mutta muut solut, jotka ovat alunperinkin lukittuja, pysyvät lukittuina kuten tarkoitus on

        Vaikuttaako se että tämä on excel 2007? Jotenkin epävarman tuntuisia nämä excelin makrot ja suojaukset.

        ja liitä tänne semmoinen toimiva versio tosta suojauksesta. Suojauksien säätely on muuttunut vuosien varrella aika paljon ja työni(asiakkaani)johdosta minulla ei ole uudempaa 2007 versiota käytössäni.


      • Tumpelo
        kunde kirjoitti:

        ja liitä tänne semmoinen toimiva versio tosta suojauksesta. Suojauksien säätely on muuttunut vuosien varrella aika paljon ja työni(asiakkaani)johdosta minulla ei ole uudempaa 2007 versiota käytössäni.

        Kyllä tämä taitaa jo pelata. Konstikasta on näin tottumattomalle. Aurinkoista kevättä!


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Onko vassarin lääkkeet(mt) jääneet taas ottamatta

      Sen verran järjetöntä persuhuutoa taa näkyville. Tuo yksi häiriintynyt ei osaa kuin "huutaa" isoilla kirjaimilla, se on
      Maailman menoa
      47
      1482
    2. Mies, kumman ottaisit mieluummin

      176 cm vai 154 cm naisen, jos molemmat muuten yhtä viehättäviä? Mikä on oma pituutesi?
      Sinkut
      183
      1219
    3. Kuinkahan monen

      Naisen puolisoa olet nainen vikitellyt ja eron aiheuttanut? Toivottavasti karma on ku*sut muroihisi useamman kuin kerran
      Ikävä
      105
      1147
    4. Kauan mökötetään toisillemme?

      Loppuelämäkö? Vai oisko jo pussailutreffit?
      Ikävä
      69
      845
    5. Olen nainen pahoillani, että tykkään sinusta niin paljon, että

      Haluaisin panna sua. Tuntuu vaan siltä, että olet sen suhteen ihan haluton. Ei minulle riitä pelkkä ystävyyssuhde.
      Ikävä
      59
      840
    6. Tekisi mieli vetäistä kunnon jurrit sinun kanssasi

      Ja keskustella asiat, ei tästä tule hevonvttua.
      Ikävä
      51
      781
    7. Anteeksi mies

      En jaksa tätä…, en halua, että sinulla on paha mieli tämän takia. Viestiä Sinulle.
      Ikävä
      49
      770
    8. Pettymys TTK-parketilla! Anna Hanski tippui - Sami-opelta erikoinen heitto: "Nyt sä pääset..."

      Toisena parina Tanssii Tähtien Kanssa -kisasta tippuivat Anna Hanski ja Sami Helenius. Pettymys oli käsinkosketeltava y
      Tanssii tähtien kanssa
      28
      751
    9. Venäjä häviämässä 30 vuoden sodan

      Ukraina vapautti kolme aluetta, operaatio Vivaldi laajenee
      Maailman menoa
      681
      704
    10. Eikö olisi mukavaa

      Jakaa arki yhdessä mies. Tämmöisin aatoksin.
      Ikävä
      51
      689
    11. Mieti oikeasti

      Ollaan lähes tuntemattomia, mutta samalla on tämä erityinen vuosien tilanne takana, joka on ollut monella tapaa väärin.
      Ikävä
      30
      647
    12. Poliisi etsii kadonnutta henkilöä Lapualla

      Henkilö on kadonnut 18-19.9.2026 välisenä yönä. Henkilö on hoikka,n 185 cm pitkä. Kadonneella on ollut katoamishetkellä
      Lapua
      32
      632
    13. Jonkun mussukka ajanu rallia

      S- Marketilla. Vautsi vau.
      Hyrynsalmi
      10
      627
    14. Taasko sä vedit

      Suojamoodin päälle? Miehelle
      Ikävä
      87
      617
    15. Oot komea

      etkä näytä vanhenevan. Mieskarkki. Mä en yritä mitään, mä oon sulle liian vanha. Olis kuitenkin kiva tutustua suhun. n
      Ikävä
      20
      593
    16. kene ajoi "kolarin"?

      "Punkaharjulla Luston ja Tuppuranmäen välillä sattui tiistaina aamupäivällä liikenneonnettomuus. Poliisin mukaan Savonl
      Savonlinna
      14
      585
    17. Tiedoksi yhdelle naiselle

      että mies lähestyy kaikin tavoin jos on kiinnostunut! 🙋🏻‍♂️
      Ikävä
      43
      563
    18. Laittaisit viestin suoraan!!

      Haluaisin...
      Ikävä
      31
      561
    19. Pahin tapa satuttaa toista

      On jättää toinen vaille mitään vastausta. Erityisen kipeää se tekee sillon jos toinen ghostaa.
      Ikävä
      56
      554
    20. On upeaa olla

      PerusSuomalainen 👍 ja tehdä töitä Suomen ja Suomalaisten hyväksi 👍
      Pyhäjärvi
      226
      548
    Aihe