Miten teen ehdollisen muotoilun jos valitulla alueella jokin arvo muuttuu?

Tarkoitukseni olisi käyttää ehdollista muotoilua uuden säännön kanssa. Eli jos joku arvo (kokonaislukujua) valitulla alueella muuttuu, niin tietty solu alueen ulkopuolella muuttuu punaiseksi. Tämä olisi minulle indikaattori, että taulukon muokkauksen jälkeen muistaisin suorittaa makron.
10260
Äänestä

Muut lukivat myös

Vastaukset 10

Vanhimmat

Helpoiten tuo onnistuu makrolla. Ehdolliseen muotoiluun ei taida yksinkertaisesti saada muutoksen tarkkailua.

Tämä ko. välilehden moduliin:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not (Intersect(Target, Range(Alue)) Is Nothing) Then
       Range(Merkki).Interior.Color = RGB(255, 0, 0)
    End If
End Sub

Esimerkissä alueet oli määritelty vakiona modulissa
Public Const Alue = "A1:C3"
Public Const Merkki = "D1"

Voit laittaa makroosi rivin, joka kuitaa värin.

Äänestä
  • Kiitos vastauksesta. En halua käyttää kuitenkaan montaa makroa samassa työkirjassa.

    Taidan kuitenkin tyytyä tekemääni ratkaisuun: jos solun E27 arvo =0 , solu E26 on vihreä tekstillä "Status". Jos arvo =1, solu E26 on punainen tekstillä "Status". Avatessani työkirjan siis manuaalisesti syötän arvon 1 soluun E27, jolloin muistan suorittaa oman makron ennen tallentamista.

    Äänestä

  • Anonyymi kirjoitti:

    Kiitos vastauksesta. En halua käyttää kuitenkaan montaa makroa samassa työkirjassa.

    Taidan kuitenkin tyytyä tekemääni ratkaisuun: jos solun E27 arvo =0 , solu E26 on vihreä tekstillä "Status". Jos arvo =1, solu E26 on punainen tekstillä "Status". Avatessani työkirjan siis manuaalisesti syötän arvon 1 soluun E27, jolloin muistan suorittaa oman makron ennen tallentamista.

    Yksinkertainen on kaunista, mutta rajoitus yksi makro per työkirja on perusteeton.

    Äänestä

  • Anonyymi kirjoitti:

    Yksinkertainen on kaunista, mutta rajoitus yksi makro per työkirja on perusteeton.

    Yksinkertainen, mutta iso on tämä kyseinen taulukkokin. Tämän halusin vain siksi, että muistan suorittaa tuon oman makron ennen tallentamista ja vielä tarkistaa ennen tallennusta.

    Äänestä

Kun Excel aukeaa, niin voit liittää siihen makron. Mutta jos 1 pikku makro on liikaa, niin sitten manuaalisesti vaan..

Private Sub Workbook_Open()
Worksheets(1).Range("E27") = 1
End Sub

Äänestä
  • @kunde . Tämän tein; kiitosta.

    Äänestä

  • Anonyymi kirjoitti:

    @kunde . Tämän tein; kiitosta.

    Voithan sä sen makron liittää suoraan ennen sulkemista tapahtumaankin, jolloin tota aukeamistapahtuman makroa ei sitten tarvitse ja suorittaa sen sun makron automaattisesti...

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    tähän oman makro kutsu
    End Sub

    Keep EXCELing
    @Kunde

    Äänestä

  • kunde kirjoitti:

    Voithan sä sen makron liittää suoraan ennen sulkemista tapahtumaankin, jolloin tota aukeamistapahtuman makroa ei sitten tarvitse ja suorittaa sen sun makron automaattisesti...

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    tähän oman makro kutsu
    End Sub

    Keep EXCELing
    @Kunde

    @kunde Onko mitään eroa jos suorittaa tuon makron sulkiessa tai avatessa ko. työkirjan?

    Äänestä

  • @kunde Kiitos selvennyksestä ja nopeista vastauksista. Homma on nyt selvä tämän ketjun osalta.

    Äänestä

Tarvitsenkin lisää apuja. Nyt tarkoitus olisi suojata taulukkoa ja välilehtiä "sheets" tiettyjen solualueiden osalta. Suojaa solut ratkaisu ei käy, koska jaan työkirjaa One Driven kautta jaetulla linkillä vain luku muodossa.

Tein tällaisen koodin "Workbook, Change":

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("B7:S49")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True

MsgBox "Cell " & Target.Address & "Et voi muuttaa solun arvoa"

End If
End Sub

Tämä toimii, mutta jos valitsen solun tältä alueelta ja syötän siihen esim. luvun 1 koodi sallii täyttökahvan käytön, enkä tietenkään voi tietenkään enää poistaa solujen sisältöä. Koodihan voi olla kylläkin väärin. Toinen ratkaisuni olisi käyttää "Workbook, SelectionChange" jolloin voisin käyttää

Private Sub Worksheet_Change(ByVal Target As Range)
If Not (Intersect(Target, Range(Alue)) Is Nothing) Then

jolloin automaattisesti tulisi teksti ja undo, mutta tähän eivät omat taidot vielä taivu.

terv.j

Äänestä

Ketjusta on poistettu 1 sääntöjenvastainen viesti.

Kommentoi aloitusta


Anonyymi kirjoitti:

Tarkoitukseni olisi käyttää ehdollista muotoilua uuden säännön kanssa. Eli jos joku arvo (kokonaislukujua) valitulla alueella muuttuu, niin tietty solu alueen ulkopuolella muuttuu punaiseksi. Tämä olisi minulle indikaattori, että taulukon muokkauksen jälkeen muistaisin suorittaa makron.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu