Prot huomio! Apua kaivataan taas...

Aina 71

Jepulis, eli onko mahdollista jollain systeemillä toteuttaa seuraava; Jos esim. A1

11

779

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • muotoilu

      Laita ehdollinen muotoilu halutuille soluille:


      Format -> Conditional formatting -> FormulaIs =A1

      • Nimimerkki

        Tuo valkoisella värin käyttäminen on joskus hyvä juttu, käytän sitä itsekkin tilanteissa jossa en halua taulukolla näkyvän jotain mutta tarvin arvoa esim koodissa.

        Jos kuitenkin halutaan piilottaa nuo rivit vain vähäksi aikaa ja kuitenkin on tarkoitus että normaalisti nuo näkyy kannattaa etsiä muita vaihtoehtoja.

        Voisit kyllä "Private Sub Workbook_BeforePrint(Cancel As Boolean)" tapahtumassa värjätä nuo rivit valkoiseksi, mutta ongelmana edelleen miten palautat värin takaisin.

        Ehkä kannataisi lähestyä ongelmaa niin että kun solussa on tietty arvo niin tulostus marginaali ja tulostus alue on tietyt, ja toisessa vaihtoedossa toisin, ja tuo tarkistus tuohon "Private Sub Workbook_BeforePrint(Cancel As Boolean)"

        Private Sub Workbook_BeforePrint(Cancel As Boolean)

        If ActiveSheet.Range("A1") > 1 Then

        tähän tarvittava tulostusalu
        tähän tarvittava marginaali

        else

        tähän tarvittava tulostusalu
        tähän tarvittava marginaali

        end if

        noin itse taulukko pysyy samana mutta tulostettaessa niin kuin haluaa.

        Taas pitää tehdä muutakin, mutta jospa yrität itse ensin saada tuon toimimaan, kysäise jos tuossa on jotain vaikeuksia niin muut voivat tarkentaa asiaa ja minäkin voin kyllä myöhemmin antaa lisä ohjeita kunhan kerkeän


      • Nimimerkki
        Nimimerkki kirjoitti:

        Tuo valkoisella värin käyttäminen on joskus hyvä juttu, käytän sitä itsekkin tilanteissa jossa en halua taulukolla näkyvän jotain mutta tarvin arvoa esim koodissa.

        Jos kuitenkin halutaan piilottaa nuo rivit vain vähäksi aikaa ja kuitenkin on tarkoitus että normaalisti nuo näkyy kannattaa etsiä muita vaihtoehtoja.

        Voisit kyllä "Private Sub Workbook_BeforePrint(Cancel As Boolean)" tapahtumassa värjätä nuo rivit valkoiseksi, mutta ongelmana edelleen miten palautat värin takaisin.

        Ehkä kannataisi lähestyä ongelmaa niin että kun solussa on tietty arvo niin tulostus marginaali ja tulostus alue on tietyt, ja toisessa vaihtoedossa toisin, ja tuo tarkistus tuohon "Private Sub Workbook_BeforePrint(Cancel As Boolean)"

        Private Sub Workbook_BeforePrint(Cancel As Boolean)

        If ActiveSheet.Range("A1") > 1 Then

        tähän tarvittava tulostusalu
        tähän tarvittava marginaali

        else

        tähän tarvittava tulostusalu
        tähän tarvittava marginaali

        end if

        noin itse taulukko pysyy samana mutta tulostettaessa niin kuin haluaa.

        Taas pitää tehdä muutakin, mutta jospa yrität itse ensin saada tuon toimimaan, kysäise jos tuossa on jotain vaikeuksia niin muut voivat tarkentaa asiaa ja minäkin voin kyllä myöhemmin antaa lisä ohjeita kunhan kerkeän

        äh, taas tein liian nopeasti kirjoitin tuon ajatuksella että rivit 1-15 halutaan piilottaa, mutta ne olikin 10-15 joten pelkillä marginaalin ja tuulostus aluetta muuttamalla et selviä tuosta, vai selviätkö?


      • Nimimerkki
        Nimimerkki kirjoitti:

        äh, taas tein liian nopeasti kirjoitin tuon ajatuksella että rivit 1-15 halutaan piilottaa, mutta ne olikin 10-15 joten pelkillä marginaalin ja tuulostus aluetta muuttamalla et selviä tuosta, vai selviätkö?

        Eli tuo ongelma miten palautta beforPrinrt tapahtuman jälkeen arvot takaisin, siis sellaista tapahtumaa ei ole kuin AfterPrint joka tekisi tämänkin helpoksi.

        Tulostushan tapahtuu vasta beforPrint tapahtuman jälkeen joten tuohon tulee aika viive ja koodi on jo käsitelty ennen tulostusta.

        Mutta muutama ketju sitten käsittelin OnTime kutsua, joten olisiko tästä apua?



        Private Sub Workbook_BeforePrint(Cancel As Boolean)

        If ActiveSheet.Range("A1") < 1 Then

        maalaa fontit valkoiseksi
        Application.OnTime Now TimeValue("00:00:30"), "PalautaVarit", False

        end if

        end sub



        Sub PalautaVarit()

        Maalaa fontit takaisin mustiksi

        End Sub


        eli 30 sekuntin kuluttua noi fontit palautetaan automaattisesti takaisin mustaksi. Laita arvoa pienemmäksi jos voit, laitoin tuohon 30 sekunttia että varmasti tuo tulostus on tapahtunut, mutta eikai siihen tarvita kuin muutama sekuntti kun tuo tulostus on muodostettu ja itse tulostushan voi kestää sitten kauemmin, kokeile mikä on sinulle parempi aika.


      • Nimimerkki kirjoitti:

        Eli tuo ongelma miten palautta beforPrinrt tapahtuman jälkeen arvot takaisin, siis sellaista tapahtumaa ei ole kuin AfterPrint joka tekisi tämänkin helpoksi.

        Tulostushan tapahtuu vasta beforPrint tapahtuman jälkeen joten tuohon tulee aika viive ja koodi on jo käsitelty ennen tulostusta.

        Mutta muutama ketju sitten käsittelin OnTime kutsua, joten olisiko tästä apua?



        Private Sub Workbook_BeforePrint(Cancel As Boolean)

        If ActiveSheet.Range("A1") < 1 Then

        maalaa fontit valkoiseksi
        Application.OnTime Now TimeValue("00:00:30"), "PalautaVarit", False

        end if

        end sub



        Sub PalautaVarit()

        Maalaa fontit takaisin mustiksi

        End Sub


        eli 30 sekuntin kuluttua noi fontit palautetaan automaattisesti takaisin mustaksi. Laita arvoa pienemmäksi jos voit, laitoin tuohon 30 sekunttia että varmasti tuo tulostus on tapahtunut, mutta eikai siihen tarvita kuin muutama sekuntti kun tuo tulostus on muodostettu ja itse tulostushan voi kestää sitten kauemmin, kokeile mikä on sinulle parempi aika.

        mutta liian monimutkainen. Muistaakseni olet joskut vastannut BeforePrint juttuun ja kertonutkin siellä Cancel muuttujasta...
        Unohtuiko?

        Private Sub Workbook_BeforePrint(Cancel As Boolean)
        'tähän fontin värin muutos tai alueen luku muistiin
        'printtaus
        'väri takaisin alkuperäiseksi ja tietojen palautus
        cancel=true
        End Sub

        elikä tehdään omat jutut ennen printtausta ja printataan itse ja sitten peruutetaan varsinainen tulostuskomento

        näppärää eikös vaan...


      • Nimimerkki
        kunde kirjoitti:

        mutta liian monimutkainen. Muistaakseni olet joskut vastannut BeforePrint juttuun ja kertonutkin siellä Cancel muuttujasta...
        Unohtuiko?

        Private Sub Workbook_BeforePrint(Cancel As Boolean)
        'tähän fontin värin muutos tai alueen luku muistiin
        'printtaus
        'väri takaisin alkuperäiseksi ja tietojen palautus
        cancel=true
        End Sub

        elikä tehdään omat jutut ennen printtausta ja printataan itse ja sitten peruutetaan varsinainen tulostuskomento

        näppärää eikös vaan...

        Siis jos lähetän uuden print käskyn niin saan uuden BeforePrin tapahtuman, Hmmm, niin tosiaan, varmistetaan ettei tule uutta Tapahtumaa ( Event ) komenolla "Application.EnableEvents = False" ja koodista uudelleen prinntaus ja "Cansel" alkuperäiselle prinntaukselle

        Hienoa


      • Nimimerkki kirjoitti:

        Siis jos lähetän uuden print käskyn niin saan uuden BeforePrin tapahtuman, Hmmm, niin tosiaan, varmistetaan ettei tule uutta Tapahtumaa ( Event ) komenolla "Application.EnableEvents = False" ja koodista uudelleen prinntaus ja "Cansel" alkuperäiselle prinntaukselle

        Hienoa

        :-)


      • Aina 71
        kunde kirjoitti:

        mutta liian monimutkainen. Muistaakseni olet joskut vastannut BeforePrint juttuun ja kertonutkin siellä Cancel muuttujasta...
        Unohtuiko?

        Private Sub Workbook_BeforePrint(Cancel As Boolean)
        'tähän fontin värin muutos tai alueen luku muistiin
        'printtaus
        'väri takaisin alkuperäiseksi ja tietojen palautus
        cancel=true
        End Sub

        elikä tehdään omat jutut ennen printtausta ja printataan itse ja sitten peruutetaan varsinainen tulostuskomento

        näppärää eikös vaan...

        ...tyttöä kuin sikaa säkissa =)

        Ei mitään ymmärrystä. Siis mitä ja minne? Tuohon kaavariville. Jos nuo on niitä makroja, niin ei kyllä pienintäkään käsitystä :( Joten josko joku viitsisi valaista, kiitos.


      • Nimimerkki
        Aina 71 kirjoitti:

        ...tyttöä kuin sikaa säkissa =)

        Ei mitään ymmärrystä. Siis mitä ja minne? Tuohon kaavariville. Jos nuo on niitä makroja, niin ei kyllä pienintäkään käsitystä :( Joten josko joku viitsisi valaista, kiitos.

        >Jos nuo on niitä makroja, niin ei kyllä pienintäkään käsitystä

        Ei se mitään vaikka et ymmärtänyt, kysymällä ja uteliaisuudella oppii uusia asioita. Tärkein asiahan on noissa taulukoissa olevat tiedot, joten olet keskittynyt kuitenkin tärkeimpiin ominaisuuksiin, nyt sitten pääset vähän kokeileen uusia asioita.


        Ensi kuitenkin palaan tuohon minun eka vaihtoehtoon eli tuohon OnTimen käyttöön, en suosittele sitä koska se kuuluu Aplicaton oliolle ja siinä on vain yksi aika kerralla, joten tuo aika kuuluu kaikille taulukoille, jos nyt käytät toisessa taulukossa tuota niin kumoat toisen. jätetään se tilanteisiin jotka vaativat sen käyttöä, kun ei keksitä muita vaihtoehtoja.

        tässä mielenkiinnon vuoksi testattu vaihtoehto joka toimi hienosti minulla:


        Tämä moduliin:

        Sub FonttiTakaisin()
        ActiveSheet.Range("A10:H15").Font.ColorIndex = 0
        End Sub


        ja tämä ThisWorkbook olioon:

        Private Sub Workbook_BeforePrint(Cancel As Boolean)

        If ActiveSheet.Range("A1") < 1 Then
        ActiveSheet.Range("A6:C8").Font.ColorIndex = 2
        Application.OnTime Now TimeValue("00:00:15"), "FonttiTakaisin", False
        End If

        End Sub

        Windows versiossa varmaan tämä rivi pitää muutta:
        Application.OnTime Now TimeValue("00:00:15"), "FonttiTakaisin", False
        muotoon
        Application.OnTime Now TimeValue("00:00:15"), "FonttiTakaisin", , False
        eli yksi tyhjä argumentti väliin.



        No Niin ja sitten asiaan sinulle tyttö joka opit nyt uutta,
        yritän antaa ohjeet.

        1 klikkaa haluamasi taulukon välilehteä hiiren oikealla napilla
        2 valitse listasta "view code", suomeksi ehkä "näytä koodi"

        3 näkyviin tulee nyt se koodi/makrojen käsittely ikkunat, vähän huomioita, katsele mutta älä tee mitään. vasemmalla luettelo muistissa olevista excel työkirjoista, tätä listaa sanotaan projekti ikkunaksi. jokaisessa työkirjan sisällä on luettelo olioista jotka kuuluvat kyseiselle työkirjalle, eli työkirjan taulukko oliot itse työkirja olio ( Thisworkbook ) ja modulit joihin kunde yleensä viitta ( " ja moduuliin... " ). klikkaamalla kaksi kertaa haluttua oliota tai modulia saat avautuu ikkuna ( koodi ikkunan ) johon voit lisätä koodia/makroja kyseiselle oliolle/modulille. Eli jos teit kohdat 1 ja 2 projekti ikkunassa on valittuna se taulukko jonka valitsit kohdassa 1, ja oikealla puolella pitäisi olla tuon taulukon ikkuna johon voit lisätä koodia. tuo valittu olio on kuitenkin nyt väärin koska printtaus suoritetaan työkirja oliosta ja koodi kuuluu työkirja olioon (ThisWorkbook)

        4 jatketaan, eli nyt voit tehdä perässä, klikkaa kaksi kertaa sanaa "ThisWoorkbook", nyt aukeaa tuon olion koodi ikkuna.

        5 tuohon ikkunaan kopioi ja liitä seuraava koodi:


        Private Sub Workbook_BeforePrint(Cancel As Boolean)

        If ActiveSheet.Range("A1") < 1 Then

        Application.EnableEvents = False
        ActiveSheet.Range("A10:H15").Font.ColorIndex = 2

        ActiveSheet.PrintOut

        ActiveSheet.Range("A10:H15").Font.ColorIndex = 0
        Application.EnableEvents = True
        Cancel = True

        End If

        End Sub


        6 työkalu rivin vasemmassa laidassa on Excelin kuvake josta voit sulkea nämä koodi ikkunat ja palata takaisin excelin normaali näkymään, klikkaa sitä, löytyy varmaan jostain valikostakin.

        7 tallenna työkirja ja testaa esikatselulla miten meni. Loppu.

        Tämän tarkemmin minä en osaa asiaa esittää kysäise lisää ja kyllä joku muu antaa parempia ohjeita tilanteen mukaan.

        lue pari kertaa ohjeet läpi ja yritä omaksua santa moduli, olio taulukko, työkirja olio, ThisWorkbook olio, ja tärkeää on löytää ne projekti ikkunasta ja saada koodi ikkuna esiin


      • Nimimerkki
        Nimimerkki kirjoitti:

        >Jos nuo on niitä makroja, niin ei kyllä pienintäkään käsitystä

        Ei se mitään vaikka et ymmärtänyt, kysymällä ja uteliaisuudella oppii uusia asioita. Tärkein asiahan on noissa taulukoissa olevat tiedot, joten olet keskittynyt kuitenkin tärkeimpiin ominaisuuksiin, nyt sitten pääset vähän kokeileen uusia asioita.


        Ensi kuitenkin palaan tuohon minun eka vaihtoehtoon eli tuohon OnTimen käyttöön, en suosittele sitä koska se kuuluu Aplicaton oliolle ja siinä on vain yksi aika kerralla, joten tuo aika kuuluu kaikille taulukoille, jos nyt käytät toisessa taulukossa tuota niin kumoat toisen. jätetään se tilanteisiin jotka vaativat sen käyttöä, kun ei keksitä muita vaihtoehtoja.

        tässä mielenkiinnon vuoksi testattu vaihtoehto joka toimi hienosti minulla:


        Tämä moduliin:

        Sub FonttiTakaisin()
        ActiveSheet.Range("A10:H15").Font.ColorIndex = 0
        End Sub


        ja tämä ThisWorkbook olioon:

        Private Sub Workbook_BeforePrint(Cancel As Boolean)

        If ActiveSheet.Range("A1") < 1 Then
        ActiveSheet.Range("A6:C8").Font.ColorIndex = 2
        Application.OnTime Now TimeValue("00:00:15"), "FonttiTakaisin", False
        End If

        End Sub

        Windows versiossa varmaan tämä rivi pitää muutta:
        Application.OnTime Now TimeValue("00:00:15"), "FonttiTakaisin", False
        muotoon
        Application.OnTime Now TimeValue("00:00:15"), "FonttiTakaisin", , False
        eli yksi tyhjä argumentti väliin.



        No Niin ja sitten asiaan sinulle tyttö joka opit nyt uutta,
        yritän antaa ohjeet.

        1 klikkaa haluamasi taulukon välilehteä hiiren oikealla napilla
        2 valitse listasta "view code", suomeksi ehkä "näytä koodi"

        3 näkyviin tulee nyt se koodi/makrojen käsittely ikkunat, vähän huomioita, katsele mutta älä tee mitään. vasemmalla luettelo muistissa olevista excel työkirjoista, tätä listaa sanotaan projekti ikkunaksi. jokaisessa työkirjan sisällä on luettelo olioista jotka kuuluvat kyseiselle työkirjalle, eli työkirjan taulukko oliot itse työkirja olio ( Thisworkbook ) ja modulit joihin kunde yleensä viitta ( " ja moduuliin... " ). klikkaamalla kaksi kertaa haluttua oliota tai modulia saat avautuu ikkuna ( koodi ikkunan ) johon voit lisätä koodia/makroja kyseiselle oliolle/modulille. Eli jos teit kohdat 1 ja 2 projekti ikkunassa on valittuna se taulukko jonka valitsit kohdassa 1, ja oikealla puolella pitäisi olla tuon taulukon ikkuna johon voit lisätä koodia. tuo valittu olio on kuitenkin nyt väärin koska printtaus suoritetaan työkirja oliosta ja koodi kuuluu työkirja olioon (ThisWorkbook)

        4 jatketaan, eli nyt voit tehdä perässä, klikkaa kaksi kertaa sanaa "ThisWoorkbook", nyt aukeaa tuon olion koodi ikkuna.

        5 tuohon ikkunaan kopioi ja liitä seuraava koodi:


        Private Sub Workbook_BeforePrint(Cancel As Boolean)

        If ActiveSheet.Range("A1") < 1 Then

        Application.EnableEvents = False
        ActiveSheet.Range("A10:H15").Font.ColorIndex = 2

        ActiveSheet.PrintOut

        ActiveSheet.Range("A10:H15").Font.ColorIndex = 0
        Application.EnableEvents = True
        Cancel = True

        End If

        End Sub


        6 työkalu rivin vasemmassa laidassa on Excelin kuvake josta voit sulkea nämä koodi ikkunat ja palata takaisin excelin normaali näkymään, klikkaa sitä, löytyy varmaan jostain valikostakin.

        7 tallenna työkirja ja testaa esikatselulla miten meni. Loppu.

        Tämän tarkemmin minä en osaa asiaa esittää kysäise lisää ja kyllä joku muu antaa parempia ohjeita tilanteen mukaan.

        lue pari kertaa ohjeet läpi ja yritä omaksua santa moduli, olio taulukko, työkirja olio, ThisWorkbook olio, ja tärkeää on löytää ne projekti ikkunasta ja saada koodi ikkuna esiin

        Tuli mieleen semmoinen että tuossa oli tekstit pyyhitty riveiltä 10-15 kyllä mutta sarakkeista A-H. Ehkä parempi olisi laittaa niin että kaikki sarakkeet otetaan huomioon, silloin koodi olisi tälläinen:



        Private Sub Workbook_BeforePrint(Cancel As Boolean)

        If ActiveSheet.Range("A1") < 1 Then

        Application.EnableEvents = False
        ActiveSheet.Rows("10:15").Font.ColorIndex = 2

        ActiveSheet.PrintOut

        ActiveSheet.Rows("10:15").Font.ColorIndex = 0
        Application.EnableEvents = True
        Cancel = True

        End If

        End Sub


        Tuossa nuo rivit jäävät tyhjiksi ja vievät ehkä turhaa tilaa, mutta jos haluat että piilotetaan kokonaan nuo rivit printtauksen ajaksi, ja saat sivulle mahtumaan enemmän tietoa, niin voisit tehdä näin:



        Private Sub Workbook_BeforePrint(Cancel As Boolean)

        If ActiveSheet.Range("A1") < 1 Then

        Application.EnableEvents = False
        ActiveSheet.Rows("10:15").EntireRow.Hidden = True

        ActiveSheet.PrintOut

        ActiveSheet.Rows("10:15").EntireRow.Hidden = True
        Application.EnableEvents = True
        Cancel = True

        End If

        End Sub


    • Aina 71

      Aina sitä tosiaan oppii uutta. Erityisesti hyvillä ohjeilla. Ja virheiden kautta myös...

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

    Luetuimmat keskustelut

    1. Anteeksi mies

      En vaan osaa kohdata sinua ja olla normaali. En tiedä mikä vaivaa. Samaan aikaan tekee mieli tulla lähelle ja kuitenkin
      Ikävä
      62
      12168
    2. Mietin aina vain

      Minä niin haluaisin nähdä sinut. Ei tuo yhden ainoan kuvan katsominen paljon helpota... Miksi sinä et voisi olla se roh
      Tunteet
      17
      5181
    3. Hetken jo luulin, että en ikävöi sinua koko aikaa

      Mutta nyt on sitten taas ihan hirveä ikävä jotenkin. Tiedätköhän sinä edes, kuinka peruuttamattomasti minä olen sinuun r
      Ikävä
      34
      4738
    4. Outoa että Trump ekana sanoutui irti ilmastosopimuksesta

      kun Kaliforniaa riepottelee siitä johtuvat tuhoisat maastopalot. Hirmumyrskytkin ovat USA:ssa olleet tuhoisia.
      Maailman menoa
      471
      2381
    5. Palstan henkisesti sairaat ja lihavat

      Täällä on sairaita, työttömiä ihmisiä kirjoittelemassa joilla ei ole tarkoituksena kuin satuttaa ihmisiä. Jos eksyt pals
      Ikävä
      114
      2250
    6. Saan kengurakkaan kotiin viikon päästä

      Mitä tapahtui? Martina hehkutti tätä stoorissaan reilu viikko sitten, mutta eipä aussimiestä Suomessa näkynyt, vaan tapa
      Kotimaiset julkkisjuorut
      293
      1823
    7. FinFamin ryhmät

      Älkää hyvät ihmiset luottako tähän tahoon. Ryhmiä on, mutta eivät ne toimi. Ihmisiä savustetaan ulos, vaikka näissä piir
      Salo
      0
      1481
    8. Osmo Peltola voitti ansaitusti Kultaisen Venlan - Kirvoitti yleisöltä mahtavan reaktion!

      JEE, onnea Osmo! Osmo Peltola voitti Vuoden esiintyjän Kultainen Venla -palkinnon. Isä-Peltsin ja Osmon luontoseikkailu
      Suomalaiset julkkikset
      94
      1328
    9. Ähtärin sotkut

      Ähtärin kaupungin tilintarkastus tai mikä lie ollut LAITETTU SALAISEKSI. 🤔🤔🤔
      Ähtäri
      39
      1236
    10. Olen vähän

      Hysteerinen se on totta. Etkai ymmärrä miten syvästi tunnen sinua kohtaan. Ja olet aina lähelläni. Olet osa jo jotain. I
      Ikävä
      10
      1215
    Aihe