Új hozzászólás Aktív témák

  • bteebi

    veterán

    Sziasztok!

    Event makrókkal próbálnám azt elérni, hogy bizonyos cellákat/oszlopokat csak bizonyos személyek (Environ("UserName")-mel kiolvasott név alapján) szerkeszthessenek egy adott (mondjuk "DZS" nevű) munkalapon. Nagyrészt működik is, már csak 1-2 nem annyira jelentős anomália van, amiknek jó eséllyel könnyű a megfejtése, de én egyelőre nem jöttem rá.

    Az egyik oszlopot (5.) csak C és D személy írhatja, a többit pedig csak A és B, de rajtuk kívül senki más (tehát pl. E és F semmit sem csinálhat). Ehhez egy Worksheet_Change makrót használok. Ez most már működik. Viszont azt is szeretném megakadályozni, hogy a korábban pl. az 5. oszlopba a jogosult személyek által bevitt adatokat ki tudják törölni arra nem jogosultak. A Worksheet_Change makró ugye csak akkor fut le, ha a változás már megtörtént. Tehát kiírja azt, hogy pl. nem lehet szerkeszteni az adott cellát, de addigra az már szerkesztődött. Vagyis vissza kell másolni az eredeti cellaértéket. Erre van egy Worksheet_SelectionChange makró (nyilván ugyanazon a lapon):

    Dim origvalue As Variant
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      origvalue = Target
    End Sub

    Ez csak annyit csinál, hogy tárolja a cella előző értékét, és ha a módosítás/törlés nem megengedett, akkor a Worksheet_Change makróval beleírja azt, hogy Target = origvalue. Ez teljesen jól működik, csak az a baj, hogy amikor még csak megnyitod a file-t, akkor az origvalue üres, mert nincs se Worksheet_Change, se Worksheet_SelectionChange, szóval még mindig ki tudod törölni azon cella korábbi értékekét (file megnyitásonként csak a legelsőt), amelyiken éppenséggel a kurzor áll.

    Ez ellen kellene egy Private Sub Workbook_Open(), amiről most már tudom, hogy a ThisWorkbook-ba kell rakni, és részint működik is, de nem pont úgy, ahogy szeretném:

    Public origvalue As Variant
    Private Sub Workbook_Open()
      origvalue = ActiveCell.Value
    End Sub

    És így az origvalue-ban a megnyitáskor aktív cella értéke tárolódik. Viszont ha nem kattintok sehová, csak del-t nyomok a megnyitás után, akkor mégis ki tudom törölni az értéket.

    Próbáltam már többféleképp megoldani, de sehogy se jó. Hogy kellene úgy átírnom, hogy a másik ("DZS") munkalapon lévő kódban is tudjam használni ezt az origvalue-t? (Próbáltam azon a lapon is Public origvalue As Variant-ként, de az se segített.) Egyszerű megoldás lenne, ha valami üres cellára ugrana megnyitáskor a Private Sub Workbook_Open(), de az egy elég gagyi megoldás lenne.

    Nagyon köszönöm a segítségeteket! :R

Új hozzászólás Aktív témák