Merkintöjen poisto tulostuksen ajaksi

kalenteriKalle

Mulla on Excel-taulukko, jossa on ns. aktiivinen käyttöalue E5-IJ40, kyseessä on eräänlainen kalenteri.
Parittomille riveille, eli 5, 7, 9,...39 usealle sarakkeelle teen mm. P-kirjainmerkkejä (tarkoittaa Poissaoloa). Merkitsen tuon P-kirjainsolun myös vaalean ruskealla värillä erottumaan muista merkinnöistä ja väreistä.

Olisiko mahdoillista kaavalla tai VBA-koodilla poistaa nuo P-kirjaimet ja ruskeat värit väliaikaisesti kaikilta noilta parittomilta riveiltä tulostuksen ajaksi ja palauttaa ne tulostuksen jälkeen takaisin?

Varmaan simppeliä, mutta kun en osaa itse.

11

215

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • ThisWorkbook moduuliin...
      jompikumpi, mutta ei molempia!

      jos haluat parittomat rivit jäävät näkyviin, niin tää

      Private Sub Workbook_BeforePrint2(Cancel As Boolean)
      Dim Muotoilu
      Dim Väri
      On Error GoTo Virhe
      If ActiveSheet.Name = "Sheet1" Then
      Application.EnableEvents = False
      Cancel = True
      Muotoilu = Range("E5").NumberFormat
      Väri = Range("E5").Interior.Color
      Range("E5:IJ5,E7:IJ7,E9:IJ9").Interior.Pattern = xlNone
      Range("E5:IJ5,E7:IJ7,E9:IJ9").NumberFormat = ";;;"
      ActiveSheet.PrintOut
      Range("E5:IJ5,E7:IJ7,E9:IJ9").NumberFormat = Muotoilu
      Range("E5:IJ5,E7:IJ7,E9:IJ9").Interior.Color = Väri
      Virhe:
      Application.EnableEvents = True
      Cancel = True
      End If
      End Sub

      jos haluat parittomat rivit piiloon, niin tää sitten, mutta ei kuiteskaa molempia koodeja voi olla yhtäaikaa!

      Private Sub Workbook_BeforePrint(Cancel As Boolean)
      On Error GoTo Virhe
      If ActiveSheet.Name = "Sheet1" Then
      Application.EnableEvents = False
      Cancel = True
      Range("E5,E7,E9").EntireRow.Hidden = True
      ActiveSheet.PrintOut
      Range("E5,E7,E9").EntireRow.Hidden = False
      Virhe:
      Application.EnableEvents = True
      End If
      End Sub

      lisääja muuttele tarvittavat solut koodiin


      Keep EXCEling
      @Kunde

    • kalenteriKalle

      Kiitos tästä koodista. Tämä tosiaankin poistaa toivotulla tavalla parittomien rivien tiedot ja värit tulostuksen ajaksi, kunhan ensin täytin puuttuvat rivit.
      Hain kuitenkin sellaista vaihtoehtoa, missä näkisin noiden poistumisen ennen tulostamista, jolloin voisin selkeämmin hahmottaa tarvitsemaani tulostusaluetta.
      Poisto- ja palautuskoodien pitäisi näin varmaankin olla jonkun painonapin alla.
      Meneekö hankalaksi?

      • Tämmöinen

        ActiveSheet.PageSetup.PrintArea = Selection.Address

        Lisää tuo rivi ennen riviä ActiveSheet.PrintOut. Excel tulostaa kalenterista ennen tulostusta maalatun alueen. Jos mahdollisesti aimmin valittuna ollut tulostusalue ei saa muuttua, voit alussa tallettaa sen osoitteen ja palauttaa sen lopussa.
        vara = ActiveSheet.PageSetup.PrintArea
        ActiveSheet.PageSetup.PrintArea = vara


      • jompikumpi ThisWorkbook moduuliin...
        lisätty esikatselu tulostukselle

        Private Sub Workbook_BeforePrint(Cancel As Boolean)

        Dim Muotoilu
        Dim Väri
        Dim x
        On Error GoTo Virhe

        If ActiveSheet.Name = "Taul1" Then
        Application.EnableEvents = False
        Cancel = True
        Muotoilu = Range("E5").NumberFormat
        Väri = Range("E5").Interior.Color
        Range("E5:IJ5,E7:IJ7,E9:IJ9").Interior.Pattern = xlNone
        Range("E5:IJ5,E7:IJ7,E9:IJ9").NumberFormat = ";;;"
        ActiveSheet.PrintPreview
        x = MsgBox("Tulostetaanko?", vbInformation vbYesNo)
        If x = 6 Then
        ActiveSheet.PrintOut
        End If
        Range("E5:IJ5,E7:IJ7,E9:IJ9").NumberFormat = Muotoilu
        Range("E5:IJ5,E7:IJ7,E9:IJ9").Interior.Color = Väri
        Virhe:
        Application.EnableEvents = True
        Cancel = True
        End If
        End Sub


        Private Sub Workbook_BeforePrint(Cancel As Boolean)

        On Error GoTo Virhe
        If ActiveSheet.Name = "Taul1" Then
        Application.EnableEvents = False
        Range("E5,E7,E9").EntireRow.Hidden = True
        ActiveSheet.PrintPreview
        x = MsgBox("Tulostetaanko?", vbInformation vbYesNo)
        If x = 6 Then
        ActiveSheet.PrintOut
        End If
        Range("E5,E7,E9").EntireRow.Hidden = False
        Virhe:
        Application.EnableEvents = True
        Cancel = True
        End If
        End Sub

        Keep EXCELing
        @Kunde


    • Tämmöinen

      Ratkaisin tuon toisella tavalla. Alueelle "E5:IJ40" voi laittaa ehdollisen muotoilu, joka näyttää P-solut automaattisesti huomiovärillä. Tulostusta varten on nappi, jolla ajetaan Tulostus-makro. Makro lisää uuden ehdollisen muotoilun ja poistaa sen tulostuksen jälkeen. Tässä ei erotella parillisia ja parittomia. Oletan, että parillisille riveille ei tule pelkkiä P-kirjaimia.
      Jostain syystä Excel ei minulla reagoi BeforePrint-eventiin millään tavalla.
      Sub Tulostus()
          Set Alue = Range("E5:IJ40")
          Alue.FormatConditions.Add Type:=xlExpression, Formula1:="=(E5=""P"")"     n = Alue.FormatConditions.Count                                           With Alue.FormatConditions(n)                                                .SetFirstPriority                                                         .Font.ThemeColor = xlThemeColorDark1                                      .Interior.Pattern = xlNone                                                                                       End With
          ActiveSheet.PrintOut
          Alue.Cells.FormatConditions(1).Delete
      End Sub

      • Private Sub Workbook_BeforePrint(Cancel As Boolean) koodi pitää olla ThisWorkbook moduulissa, jotta toimii


      • Tämmöinen
        kunde kirjoitti:

        Private Sub Workbook_BeforePrint(Cancel As Boolean) koodi pitää olla ThisWorkbook moduulissa, jotta toimii

        On oikeassa paikassa, mutta siellä ei edes käydä. Muut, esim. SelectionChange toimii kyllä.


    • kalenteriKalle

      Kiitokset "Kundelle" ja "Tämmöselle" näistä koodauksista. Rupesin kuitenkin miettimään kalenterini syvintä olemusta -mikä palvelisi käyttöäni parhaiten.
      Jos unohtaisi tuon alkuperäisen esitykseni P-kirjaimista ja ruskeista soluväreistä, esittäisin uuden korvaavan ajatukseni.

      Jos arvon Kunde ja/tai Tämmönen viitsisivät vielä miettiä uutta ajatustani toteutustasolla.
      Edelleen pysyisin alueella E5:IJ40.
      Tuon alueen parittomille riveille teen huomioväri-vihreisiin (vbGreen) soluihin erilaisia lyhenteitä, kuten TV, X, W.. jne.
      Välillä tulee tarve tulostaa osa kalenterinäkymästä ja sen hoidan Windowsin "Leikkaustyökalulla". Sitä ennen haluaisin esim. nappia painamalla muuttaa kaikki koko E5:IJ40 alueen parittomien rivien vihreiden (vbGreen) alueiden TV, X, W.. jne lyhenteet sanoiksi: "poissa".
      Tarkennuksena vielä, että alueella E5:IJ40 vain parittomilla riveillä on vihreitä(vbGreen)soluja ja em. lyhenteitä.

      Pahoittelen mieleni muuttamista. :)

      • Tämmöinen

        Kopioi tuo kalenteri aluperäisen alapuolelle, esim. solusta E51 lähtien. Laita soluun E51 =IF(ISBLANK(E5);"";"poissa") ja soluun E52 =IF(ISBLANK(E6);"";E6) Kopioi nämä ja liimaa (paste special, formulas) koko alueelle. Tässä pitäisi nyt olla haluamasi versio kalenterista.


    • kalenteriKalle

      Katsotaan ja kokeillaan tätä sitten.
      Kiitos Tämmönen!

    • kalenteriKalle

      Ei oikein tahdo onnistua tällä kertaa. Löytyisikö Ehdollisen muotoilun puolelta keinoa muuttaa rajatun alueen tiettyjen solujen tekstit toiseksi. Eli jos esim soluun A1 näppäilee kirjaimen "P" muuttuisi halutut solut (E5-IJ40) tekstiksi "Poissa".

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

    Luetuimmat keskustelut

    1. Vasemmistohallitus palauttaa hintasääntelyn, esim. bensalitra vain 1e.

      Tuleva vasemmistolaisista koostuva hallitus ottaa käyttöön vanhat hyvät keinot pitää hinnat kurissa. Tähän tarkoitukse
      Maailman menoa
      93
      4722
    2. Vasemmistolainen valehteli jälleen - Purra tai persut eivät luvanneet "euron bensaa"

      Väite "euron bensasta" on ensisijaisesti poliittisten vastustajien käyttämä puhdas vale. Persut kyllä kampanjoivat näky
      Maailman menoa
      113
      3902
    3. Arman Alizadin viesti puna-aktivisteille: "Pitäkää lärvinne nytkin kiinni"

      Arman Alizad kritisoi vasemmiston kaksinaismoralismia. Iranissa syntynyt suosikkijuontaja Arman Alizad pakeni perheensä
      Maailman menoa
      204
      3768
    4. Minja Koskela nostanut vasemmistoliiton kannatuksen ennätykseen

      Koskela valittiin puolueen johtoon lokakuussa 2024, ja silloin Ylen kysely antoi puolueelle 9,3 prosentin kannatuksen.
      Maailman menoa
      88
      2169
    5. Antti johtaa Petteriä jo 7,1 prosenttiyksiköllä

      Tällä menolla sdp menee kokoomuksesta kierroksella ohi jo tällä vaalikaudella. https://yle.fi/a/74-20213575
      Maailman menoa
      75
      1951
    6. Mitä on tullut

      Entisen abcn rakennuksen tilalle se oli tyhjillään monta vuotta siellä oli jo nyt valot onko huoltoasema? 5:30.
      Haapavesi
      79
      1328
    7. Harmi nainen kun

      olet niin elähtäneen näköinen. Miestä et koskaan löydä itelles. j
      Ikävä
      131
      1214
    8. Palosta selvinnyt 18 vuotias munira tarvitsi tulkin kun puhui Iltalehdelle

      Suomessa asuva 18 vuotias tarvii tulkin !!! Tää Suomea puhumaton on palossa kuolleen naisen veli ja asui perheen kanssa.
      Vantaa
      161
      1183
    9. Minne pyydän sut?

      Jotta saan nähdä 🤨
      Ikävä
      53
      1085
    10. Mikä homma?

      https://share.google/NvruSS4P4EzjTWPov Poliisilla oli keskiviikkona 4. maaliskuuta yksityisasunnossa Saarijärvellä tehtä
      Saarijärvi
      30
      934
    Aihe