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.
Merkintöjen poisto tulostuksen ajaksi
11
179
Vastaukset
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 SubPrivate 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
- 2082655
Törkeä eläinsuojelurikos Sonkajärvellä
Pohjois-Savossa Sonkajärvellä noin 40 kissaa ja reilut 10 koiraa on jouduttu lopettamaan kaltoinkohtelun vuoksi, kertoo521866Jotkut ihmiset pelkäävät syöpää sairastavaa
On hauskaa, kun kertoo jollekin, että "minulla on syöpä". Jotkut käyttäytyvät kuin se olisi tarttuva tauti. Eivät uskall1521447Lavrov suivaantui Stubbille perustellusti.
Lavrov perusteli suivaantumistaan tosiasioilla Suomen tarinasta sotiemme jälkeen, tutkija Tynkkynen ja pankkihenkilö Sol3671418Sukupuolia on vain kaksi- kohukassista tuli kova tuomio perheenisälle oikeudessa.
https://www.iltalehti.fi/kotimaa/a/4d4db0d9-4dda-4ba6-a699-25d725683ad6 Miten näin normaalista kassissa olevasta tekstis3571356Kääminsä polttanut taksi suomussalmella
Vieläkö sillä hermonsa menettäneellä hulluja ylinopeuksia ajavalla asiakkaansa haukkuvalla( jos ajat paska kyydin hänen251246Se ei ihan oikeasti vaatisi kuin yhden
Tekstiviestin... Jos rakastat minua vielä toivoisin että laittaisit minulle viestiä. Rakastatko? Oletko oikeasti niin pe611213Eronnut Janni Hussi palaa julkisuuteen - Aloittaa uudessa työssä, joka on aivan uusi pesti Suomessa
Janni Hussi on saanut viime aikoina kohujulkisuutta, kun hänen ja Joel Harkimon avioliitto päättyi eroon kesällä 2025. H141146- 551006
Jorma Uotinen avaa sanaisen arkkunsa TTK-miesparista ja koko uudistuksesta: "Sehän on..."
Tanssii Tähtien Kanssa -parketilla nähdään ensimmäistä kertaa Suomessa tanssiparina miespari kauden alusta asti. Mikko S23928