rivien poisto ja palautus

on_ja_off

Hei,
Onnistuuko poistaa JOS-ehdon täyttävien solujen rivit tulostuksen ajaksi ja miten saan rivit näppärästi taas näkyviin?

24

565

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • ThsiWorkbook moduuliin...


      Private Sub Workbook_BeforePrint(Cancel As Boolean)
      On Error Resume Next
      Application.EnableEvents = False
      'muuta ehto sopivaksi
      If ActiveSheet.Range("H1") = 1 Then
      'muuta rivit sopivaksi
      Rows("6:9").EntireRow.Hidden = True
      ActiveWindow.SelectedSheets.PrintOut
      Rows("6:9").EntireRow.Hidden = False
      Cancel = True
      Application.EnableEvents = True
      End If
      End Sub

    • on_ja_off

      Kiitos vastauksesta Kunde. Rupesin pohtimaan omaa onelmaani ja tässä hieman tarkennusta.
      Kun taulukkoni F-sarakkeelle satunnaisiin soluihin alueelle 4-100 näpytellään hintatietoja, haluaisin tarvittaessa piilottaa ko. rivit tulostuksen ajaksi ja tulostuksen jälkeen palauttaa piilotetut rivit takaisin.
      Koitin JOS-funktiolla piilottaa solun hintatieto-sisältöä tyyliin: =JOS(F5>0;"") mutta tuolla alkeellisella kaavalla se ei ainakaan onnistu.

      Kunde, sisältääkö koodisi minkälaisia elementtejä.. Ajatus oli, että tekemällä tuolle painonapin se piilottaisi ko. rivit ja toisella napilla palauttaisi rivien sisällön. Menikö metsään?
      Haluaisin kovasti tällaisen ajatukseni toimivan käytännössä.
      Eli avaisitko hieman koodisin logiikkaa, mikä rivi vaikuttaa mihinkäkin.
      Rupean soveltamaan käytännössä tuota, kunhan pikkusen avaisit sitä. :))

      Ps. Olen joitakin koodeja kyllä tuonne VB:n puolelle joskus onnistuneesti lisäillyt, luulisin onnistuvan tämänkin kanssa.

      Kiitos etukäteen!

    • koodi ThisWorkbook moduuliin...

      Private Sub Workbook_BeforePrint(Cancel As Boolean)

      Dim solu As Range
      'ohitetaan virhetilanteet
      On Error Resume Next
      'estetään Excelin reakointi tapahtumiin
      Application.EnableEvents = False
      'muuta ehto sopivaksi
      'täsää käydään solualue läpi solu kerrallaan
      For Each solu In Range("F4:F100")
      'tarkistetaan onko hinta solussa
      If Not IsEmpty(solu) Then
      ' piilotetaan rivi, jos hinta solussa
      solu.EntireRow.Hidden = True
      End If
      Next
      'tulostetaan sivu
      ActiveWindow.SelectedSheets.PrintOut
      'palautetaan piilotetut rivit
      Rows("4:100").EntireRow.Hidden = False
      'peruutetaan normaalitulostus
      Cancel = True
      'palautetaan Excel normaalitilaan
      Application.EnableEvents = True
      End Sub

      Keep EXCEling
      @Kunde

    • on_ja_off

      No kappas, sain ekalla toimimaan. ;DD Aivan ihmeellisen loistavaa Kunde!
      Nyt kun näki miten koodisi toimi ja vaikutti tulosteeseen, en voi olla kysymättä jatkomuutosta tälle.

      Ihan aluksi, F-sarakkeeseen tulee siis hintatieto, jolla karsitaan tulosteesta ne rivit pois. Tämä toimii moitteetta. Voiko koodin muuttaa niin, että kahden sarakkeen ehdot huomioitaisiin?
      Eli, E-sarake on määrä-sarake (4-100) -ja olisikin alunperin pitänyt kysyä:
      Onnistuuko tulostuksen ajaksi poistaa ne rivit joiden E ja F -soluissa on määrä- ja hintatieto, sekä LISÄKSI ne rivit, joiden E-soluissa ei ole määrä-merkintää, eli tyhjä?

      Tiivistäen: Poista tulostuksen ajaksi rivit jos E ja F -soluissa on tieto, sekä jos E-solu on tyhjä.
      Lopulta tulostetaan vain ne rivit joiden E-solussa on määrä ja F-solu on tyhjä.

      Toivottavasti en sotke hyvin toimivaa koodia, mutta kun se ruokahalu kasvoi. :))

    • Private Sub Workbook_BeforePrint(Cancel As Boolean)
      Dim solu As Range
      'ohitetaan virhetilanteet
      On Error Resume Next
      'estetään Excelin reakointi tapahtumiin
      Application.EnableEvents = False
      'muuta ehto sopivaksi
      'täsää käydään solualue läpi solu kerrallaan
      For Each solu In Range("F4:F100")
      'tarkistetaan onko hinta solussa
      If Not IsEmpty(solu) Or IsEmpty(solu.Offset(0, -1)) Then
      ' piilotetaan rivi, jos hinta solussa
      solu.EntireRow.Hidden = True
      End If
      Next
      'tulostetaan sivu
      'ActiveWindow.SelectedSheets.PrintOut
      'palautetaan piilotetut rivit
      Rows("4:100").EntireRow.Hidden = False
      'peruutetaan normaalitulostus
      Cancel = True
      'palautetaan Excel normaalitilaan
      Application.EnableEvents = True
      End Sub

      Keep EXCEling
      @Kunde

    • on_ja_off

      Kiitos Kunde muutoksesta. En jostain syystä saa koodia toimimaan lainkaan.
      Kun painan Ctrl P saan ruudulle sen normaalin tulostus-dialogi-ikkunan, joka ei tullut aiemmassa versiossa -joka siis lähti lukemaan rivejä ja "sorttasi" ne tulostuskuntoon. Tämä luku - ja sorttausvaihe ei siis tule tässä uudessa versiossa lainkaan.

      Innokkaana vertailin tekemiäsi muutoksia, alla edellinen ja uusi rivi. Muuta eroa en löytänyt.
      Ennen: If Not IsEmpty(solu) Then
      Ja nyt: If Not IsEmpty(solu) Or IsEmpty(solu.Offset(0, -1)) Then

      Kun en hallitse VB:tä, niin kysynkin, pitäisikö tuon muokatun rivin hanskata myös E-sarakkeen tieto, eli jos E-sarakkeen soluissakaan ei ole tietoa, piilotetaan myös ne rivit?

      Annan mielelläni lisätietoa, jos on tarpeen.

    • Kundepuu

      jäänyt koodiin hipsu tulostus riville
      'ActiveWindow.SelectedSheets.PrintOut
      eli poista hipsu
      ActiveWindow.SelectedSheets.PrintOut
      varmuudeksi suorita allaoleva makro kanssa ennen testiä

      Sub Resetoi()
      Application.EnableEvents = True
      End Sub


      Keep EXCEling
      @Kunde

    • on_ja_off

      On tää mahtava.. toimii hienosti, juuri kuten toivoin!!

      Laitoit tuon lyhyen resetointi-makron postauksesi loppuun. Oliko tämä tarkoitus lisätä samaan moduuliin varsinaisen isomman koodin kanssa ja tuleeko se mahd. alkuun vai loppuun, vaiko peräti omaan moduuliin?

      Huomasin, että täydellisyyttä tavoitellessa tulosteesta voisi jättää alun rivit 1-3 kokonaan pois ja ainoastaan sarakkeet A:sta F:ään olisivat ne oleelliset sarakkeet, mitä tarvitsen tulosteeseen.
      Kysynkin, onnistuuko koodiisi lisäämään yo? Jos ei ole mahdollista, niin tämäkin jo pelkästään riittää, josta kiitänkin tosi paljon. Nuo lisäykset olisi kyllä mahtava viimeinen silaus. :))

    • Resetointi makro on siltä varalle, jos koodia askel askeleelta suoritat ja koko makroa ei ajeta loppuun syystä tai toisesta eli toi rivi jää suorimattamatta, ei Excelsitten reagoitapahtumiin. Siis ihan helpottamaan elämää toi koodi... ;-)

      tossa nyt pyytämäsi päivitykset

      Private Sub Workbook_BeforePrint(Cancel As Boolean)
      Dim solu As Range
      'ohitetaan virhetilanteet
      On Error Resume Next
      'estetään Excelin reakointi tapahtumiin
      Application.EnableEvents = False
      'muuta ehto sopivaksi
      'täsää käydään solualue läpi solu kerrallaan
      For Each solu In Range("F4:F100")
      'tarkistetaan onko hinta solussa
      If Not IsEmpty(solu) Or IsEmpty(solu.Offset(0, -1)) Then
      ' piilotetaan rivi, jos hinta solussa
      solu.EntireRow.Hidden = True
      End If
      Next
      'määritellään tulostusalue
      ActiveSheet.PageSetup.PrintArea = "$A$4:$F$100"
      'tulostetaan sivu
      ActiveWindow.SelectedSheets.PrintOut
      'palautetaan piilotetut rivit
      Rows("4:100").EntireRow.Hidden = False
      'peruutetaan normaalitulostus
      Cancel = True
      'palautetaan Excel normaalitilaan
      Application.EnableEvents = True
      End Sub

      Keep EXCELing
      @Kunde

    • on_ja_off

      Mainiota, suuri kiitos Kunde! Nyt meni elämä helpoksi. :)
      Jos oikein ymmärsin, niin pystyykö siis koodiasi käymään läpi rivi-riviltä..? Miten se tapahtuu, kiinnostaisi!? Tuota makroa ei siis ole tarvinnut kertaakaan käyttää, kun koodisi on toiminut aivan loistavasti. Mutta hyvä tietää mihin tuo on tarkoitettu.

      En ole lainkaan tyytymätön, mutta kun sulla tuntuu olevan ylivetainen taito tuottaa toimivaa koodia, niin en voi olla kysymättä, pystyykö tuota "sorttausta" pysäyttämään siihen hetkeen, ennen kuin se rupeaa tulostamaan, eli eräänlaiseen "esikatselutilaan" joka sitten hyväksytään tai perutaan esim Enterillä tai Esc-illä?
      Korostan, tähänkin olen erittäin tyytyväinen ja kiitän vielä kerran ja mukavaa vkla. :))

    • Rivi riviltä koodinajo
      Valitse koodinsta joku ei kommentti rivi ja painele F8 näppäintä ja koodia suoritetaan rivi kerrallaan. Voit lisätä stopin koodiin klikkaamalla sitä koodialueella vasemmalla olevaa harmaata palkkia hiiren vasemmalla painikkeella. Nyt koodi suoritetaan siihen stopiin asti ja ja jatketaan F8 ivi kerrallaan tai F5 loppuun asti.
      Esikatselusta poistut ESC tai klikkaamalla poistunappia. Kysyy sitten haluatkotulostaa jne...

      Private Sub Workbook_BeforePrint(Cancel As Boolean)
      Dim solu As Range
      'ohitetaan virhetilanteet
      On Error Resume Next
      'estetään Excelin reakointi tapahtumiin
      Application.EnableEvents = False
      'muuta ehto sopivaksi
      'täsää käydään solualue läpi solu kerrallaan
      For Each solu In Range("F4:F100")
      'tarkistetaan onko hinta solussa
      If Not IsEmpty(solu) Or IsEmpty(solu.Offset(0, -1)) Then
      ' piilotetaan rivi, jos hinta solussa
      solu.EntireRow.Hidden = True
      End If
      Next
      'määritellään tulostusalue
      ActiveSheet.PageSetup.PrintArea = "$A$4:$F$100"
      'näytetään tulostuksen esikatselu
      ActiveSheet.PrintPreview
      x = MsgBox("Tulostetaanko?", vbYesNo, "Tulostus")
      If x = 6 Then
      'tulostetaan sivu
      ActiveWindow.SelectedSheets.PrintOut
      End If
      'palautetaan piilotetut rivit
      Rows("4:100").EntireRow.Hidden = False
      'peruutetaan normaalitulostus
      Cancel = True
      'palautetaan Excel normaalitilaan
      Application.EnableEvents = True
      End Sub

      Keep EXCELing
      @Kunde

    • on_ja_off

      Ei hitto.. teit sen sittenkin! Tämä oli kyllä hieno juttu!
      Nyt ei tulekaan muuta paranneltavaa, enkä enää kehtaisi vaivatakaan sua sillä. ;D

      En vielä testaillut koodisi rivi-riviltä ajoa, mutta teen sen vielä. Kiitos siitäkin.

      Varsinainen taulukkoni palvelee ison porukan eräänlaista kauppaostoslistaa, jossa:
      A-sarakkeella on ostoksen nimi
      B-sarakkeella Laatu/merkki
      C-sarakkeella Huomioitavat asiat
      E-sarakkeella määrä
      F-sarakkeella Hinta
      G-sarakkeella Vuosiluku (esim. 2018) ja kust./hklö
      H-sarakkeella...
      ... jne
      ... jne

      Eli teen ostoksia listan tuotteista satunnaisessa järjestyksessä ja merkkaan ne taulkkoon hinta-sarakkeelle, kun määrä-sarakkeella on jo määrät merkitty.
      Taulukossa on tuotteiden välissä myös ryhmien otsakkerivejä, joita ei ole tarve tulostaa.
      Tämän koodisi ajo auttaa hahmottamaan puuttuvat hankinnat ja on näppärä tulostaa "ostoslista" mukaan kauppaan. :)
      Tämä tuli siis tosiaan tarpeeseen! Kiitos vielä Kunde!

      Ps. No sellainen pyörähti mielessä, että pystyykö nuo esikatselutiedot kopioimaan ihan editoitavassa muodossa esim. alkamaan riviltä A130. Ne voisi ihan jäädäkin sinne paikalleen, näin voisin ne tarvittaessa kopioida sieltä ja lähettää jollekin vaikka sähköpostilla.
      Eli tämmöinen pieni lisäys, jos ei kuulosta mahdottomalta. :D

    • Private Sub Workbook_BeforePrint(Cancel As Boolean)
      Dim solu As Range
      Dim x
      'ohitetaan virhetilanteet
      On Error Resume Next
      'estetään Excelin reakointi tapahtumiin
      Application.EnableEvents = False
      'muuta ehto sopivaksi
      'täsää käydään solualue läpi solu kerrallaan
      For Each solu In Range("F4:F100")
      'tarkistetaan onko hinta solussa
      If Not IsEmpty(solu) Or IsEmpty(solu.Offset(0, -1)) Then
      ' piilotetaan rivi, jos hinta solussa
      solu.EntireRow.Hidden = True
      End If
      Next
      'määritellään tulostusalue
      ActiveSheet.PageSetup.PrintArea = "$A$4:$F$100"
      'näytetään tulostuksen esikatselu
      ActiveSheet.PrintPreview
      x = MsgBox("Tulostetaanko?", vbYesNo, "Tulostus")
      If x = 6 Then
      'tulostetaan sivu
      ActiveWindow.SelectedSheets.PrintOut
      Range("A130:A230").Delete
      Range("1:100").SpecialCells(xlCellTypeVisible).Copy Range("A130")
      End If
      'palautetaan piilotetut rivit
      Rows("4:100").EntireRow.Hidden = False
      'peruutetaan normaalitulostus
      Cancel = True
      'palautetaan Excel normaalitilaan
      Application.EnableEvents = True
      End Sub

      Keep EXCELing
      @Kunde

    • on_ja_off

      Iltaa taas Kunde ja tänks viimeisimmästä muutoksesta! Tuo toimii ihan loistavasti, ei siis valittamista.

      Jos osaisin VB:n saloja, lähtisin itse hienosäätämään tuota viimeisintä toivettani, mutta kun en osaa. Kysynkin, onnistuisiko jättää ne kopioidut rivit sinne A130:A230 alueelle, vaikka peruisinkin tulostuksen? Nythän täytyy ensin tulostaa ja sen jälkeen ne kopioidut vasta näkyy siellä alhalla.
      Tämmöinen pieni toive siis olisi vielä -kun ennätät. Ei siis kiirettä. :DD

    • Kundepuu

      Private Sub Workbook_BeforePrint(Cancel As Boolean)
      Dim solu As Range
      Dim x
      'ohitetaan virhetilanteet
      On Error Resume Next
      'estetään Excelin reakointi tapahtumiin
      Application.EnableEvents = False
      'muuta ehto sopivaksi
      'täsää käydään solualue läpi solu kerrallaan
      For Each solu In Range("F4:F100")
      'tarkistetaan onko hinta solussa
      If Not IsEmpty(solu) Or IsEmpty(solu.Offset(0, -1)) Then
      ' piilotetaan rivi, jos hinta solussa
      solu.EntireRow.Hidden = True
      End If
      Next
      'kopioidaan tiedot alas
      Range("A130:A230").Delete
      'jos et halua 1-3 riviä siirtää vaihda hipsun paikka allaolevilla 2 rivillä
      'Range("4:100").SpecialCells(xlCellTypeVisible).Copy Range("A130")
      Range("1:100").SpecialCells(xlCellTypeVisible).Copy Range("A130")

      'määritellään tulostusalue
      ActiveSheet.PageSetup.PrintArea = "$A$4:$F$100"
      'näytetään tulostuksen esikatselu
      ActiveSheet.PrintPreview
      x = MsgBox("Tulostetaanko?", vbYesNo, "Tulostus")
      If x = 6 Then
      'tulostetaan sivu
      ActiveWindow.SelectedSheets.PrintOut
      End If
      'palautetaan piilotetut rivit
      Rows("4:100").EntireRow.Hidden = False
      'peruutetaan normaalitulostus
      Cancel = True
      'palautetaan Excel normaalitilaan
      Application.EnableEvents = True
      End Sub
      Keep EXCELing
      @Kunde

    • on_ja_off

      Tänks Kunde, testailen kunhan pääsen hu kotikoneelleni ja palaan asiaan.:)

    • on_ja_off

      Hei Kunde, iso kiitos viimeisimmästä muutoksesta, tuo kopion jättäminen joka tapauksessa sinne alas oli erittäin tervetullut päivitys taulukkooni!
      Juuri nyt ei pinnistämälläkään tule mieleen mitä tähän voisi lisätä tai poistaa, sen verran mainio tämä nyt on. :))
      Ps. Tämä alla oleva valinnan mahdollisuus oli mainio lisä tai ominaisuus, voi olla hyväkin joskus valita nuo 1-3 rivin kopiointi! Kiitos tästä oivalluksesta erikseen. Tulee varmasti käyttöön.
      ##
      'jos et halua 1-3 riviä siirtää vaihda hipsun paikka allaolevilla 2 rivillä
      'Range("4:100").SpecialCells(xlCellTypeVisible).Copy Range("A130")
      Range("1:100").SpecialCells(xlCellTypeVisible).Copy Range("A130")
      ##

      Tuota rivi-riviltä ajoakin kokeilen vielä joskus erikseen..

      Jos jotain päivitystarvetta tulee itselle vielä mieleen, voin varmaankin vaivata sinua vielä! -Toivottavasti :D

    • on_ja_off

      Kundelle lisäkysymys!
      Tekemääni ja auttamaasi yo. taulukkoa käytän Ms Office 2007 -versiossa ja siinä se toimii hienosti.
      Lähetin spostilla taulukon kaverilleni testattavaksi ja suureksi yllätykseksi se ei toiminutkaan Ms Office 2010 -versiossa!!
      Tässä vielä tarkennuksena, miten ei toiminut ja mitä kaikkea yritimme itse tehdä:
      Toimimattomuus ilmeni Ms Office 2010 -versiossa siten, että ruvettaessa tulostamaan (Ctrl p) - Exceli ei ruvennut ns. "sorttaamaan" tulostettavia rivejä, vaan siirtyi suoraan tulostuksen esinäkymään, jossa näkyi KAIKKI rivit, vaikka osa riveistä EI pitäisi tulostua!
      Peruutettaessa tulostusksen esinäkymä lähtötilanteeseen, ei edes rivistä 130 lähtien tullut niitä kopioituja rivejä. Toisin sanoen jostain syystä Ms 2010:ssä koodisi ei toiminut lainkaan.

      Itse kokeiluja keinoja oli useita:
      -otettu käyttöön kaikki makrot
      -Salli VBA-projektin objektimallin käyttäminen
      -tallennettu eri nimelle (salli makrojen käyttö)
      -kokeilimme jopa edestakaisin liitteen lähettämistä -lopputulos minulla toimi, mutta ei kaverilla.
      -Taulukossa on lisäksi J-sarakkeessa JOS-funktioita, mutta ne näkyvät ja toimivat normaalisti kaikissa tilanteissa molemmilla.

      Enää ei tule mieleen mitään kotikonsteja.
      Tulisiko sinulle mitään mieleen, miksi 2007:ssa toimii, mutta ei 2010:ssä? Yleensähän nämä ohjelmat toimivat alaspäin, eli uusimmissa versioissa toimii myös vanhemmat taulukot ja työkirjat.

      • on_ja_off

        Lisäyksenä vielä, että kaverillani on kotioloissa Windows 10 ja töissä Windows 7 versiot. Kummassakaan (Kunden) koodi ei toiminut. Käytössä siis Office 2010.
        Aika ihmeellistä, että se toimii mulla Win7 ja Office 2007:ssä!


    • vaikeeta vastata kun bannaa mut kokoajan...
      tein videon , missä mun 2010 ohjelma toimii ihan Ok
      Tsekkaa ja kokeile alla olevalla koodilla ja jos herjaa jotakin, niin infoa

      tossa koodi
      Private Sub Workbook_BeforePrint(Cancel As Boolean)
      Dim solu As Range
      Dim x
      'ohitetaan virhetilanteet
      On Error Resume Next
      'peruutetaan normaalitulostus
      Cancel = True
      'estetään Excelin reakointi tapahtumiin ja näytön päivitysa pois
      Application.EnableEvents = False
      Application.ScreenUpdating = False
      'muuta ehto sopivaksi
      'täsää käydään solualue läpi solu kerrallaan
      For Each solu In Range("F4:F100")
      'tarkistetaan onko hinta solussa
      If Not IsEmpty(solu) Or IsEmpty(solu.Offset(0, -1)) Then
      ' piilotetaan rivi, jos hinta solussa
      solu.EntireRow.Hidden = True
      End If
      Next
      'kopioidaan tiedot alas
      Range("130:230").Delete

      'jos et halua 1-3 riviä siirtää vaihda hipsun paikka allaolevilla 2 rivillä
      'Range("4:100").SpecialCells(xlCellTypeVisible).Copy Range("A130")
      Range("1:100").SpecialCells(xlCellTypeVisible).Copy Range("A130")
      'Range("4:100").SpecialCells(xlCellTypeVisible).Copy Range("A130")

      'määritellään tulostusalue
      ActiveSheet.PageSetup.PrintArea = "$A$4:$F$100"

      'näytetään tulostuksen esikatselu
      ActiveSheet.PrintPreview
      x = MsgBox("Tulostetaanko?", vbYesNo, "Tulostus")
      If x = 6 Then
      'tulostetaan sivu
      ActiveWindow.SelectedSheets.PrintOut
      End If

      'palautetaan piilotetut rivit
      Rows("4:100").EntireRow.Hidden = False

      'palautetaan Excel normaalitilaan
      Application.EnableEvents = True
      Application.ScreenUpdating = True
      End Sub

      Keep EXCELing
      @Kunde

    • unohtui se linkki videolle
      https://www.dropbox.com/s/jajgi6oimsjdv44/Suomi24.mp4?dl=0

    • on_ja_off

      Jep, kiitos videosta.. katsoin sen ja kokeilin muokatulla koodillasi omalla koneellani (Win7 Office2007) ja toimii loistavasti.
      Tuo ns. "sorttaus" toimii nyt piilossa tiimalasia näyttämällä ja hypähtää siitä sitten esikatselutilaan. Aiemmin tuo sorttaus tapahtui konkreettisesti silmien edessä rivejä piilottamalla ja siitä sitten hypähti esikatselutilaan.
      Kaverini kokeili myös kotonaan tätä uutta versiota (Win10 Office2010), eikä toiminut kuten piti.
      Eli, sorttausta ei tapahdu ja näyttää esikatselussa kaikki rivit. Toisaalta, sarakkeita se näyttää vain A-F:n, eli jotain se tekee kyllä. ;D

    • Kundepuu

      pyydä kaveriasi ajamaan alla oleva koodi rivi riviltä (hipsattu muutama rivi)
      tuleeko virheilmoitusta tai mitään muita ilmoituksia?
      Ei kyllä pitäisi olla mitään yhteensopivuusongelmia

      Private Sub Workbook_BeforePrint(Cancel As Boolean)
      Dim solu As Range
      Dim x
      'ohitetaan virhetilanteet
      'On Error Resume Next
      'peruutetaan normaalitulostus
      Cancel = True
      'estetään Excelin reakointi tapahtumiin ja näytön päivitysa pois
      'Application.EnableEvents = False
      'Application.ScreenUpdating = False
      'muuta ehto sopivaksi
      'täsää käydään solualue läpi solu kerrallaan
      For Each solu In Range("F4:F100")
      'tarkistetaan onko hinta solussa
      If Not IsEmpty(solu) Or IsEmpty(solu.Offset(0, -1)) Then
      ' piilotetaan rivi, jos hinta solussa
      solu.EntireRow.Hidden = True
      End If
      Next
      'kopioidaan tiedot alas
      Range("130:230").Delete

      'jos et halua 1-3 riviä siirtää vaihda hipsun paikka allaolevilla 2 rivillä
      Range("1:100").SpecialCells(xlCellTypeVisible).Copy Range("A130")
      'Range("4:100").SpecialCells(xlCellTypeVisible).Copy Range("A130")

      'määritellään tulostusalue
      ActiveSheet.PageSetup.PrintArea = "$A$4:$F$100"

      'näytetään tulostuksen esikatselu
      ActiveSheet.PrintPreview
      x = MsgBox("Tulostetaanko?", vbYesNo, "Tulostus")
      If x = 6 Then
      'tulostetaan sivu
      ActiveWindow.SelectedSheets.PrintOut
      End If

      'palautetaan piilotetut rivit
      Rows("4:100").EntireRow.Hidden = False

      'palautetaan Excel normaalitilaan
      'Application.EnableEvents = True
      'Application.ScreenUpdating = True
      End Sub

    • on_ja_off

      Testailimme kaverin kanssa koodiasi rivi-riviltä ajaen.. hämmästys oli suuri -se toimi!
      Kaverilla siis Win10 Office2010 ja mulla Win7 Office2007.
      Siirryimme suorittamaan varsinaista koodin ajoa käytännössä.

      Minulla Ctrl P -->tulostuksen esikatselu, jossa näkyi valmis sorttaus --> ja tulosta.
      Mulla edelleen kaikki ok.

      Kaveri: Ctrl P -->hänelle tuli tulostuksen "välinäkymä", jossa rivit 1-3 oli poistettu, mutta näkyi kuitenkin kaikki muut rivit 4-100, eli jotain sorttausta oli tapahtunut jo tässäkin vaiheessa.

      Tämän jälkeen kaverin piti painaa tuossa tilassa "Tulosta" nappia, kuten sinäkin teit videolla -jolloin tuli varsinainen tulostuksen esinäkymä ja kaikki sorttaukset oikein, eli juuri kuten pitikin ja --> tulosta.
      Tämän viimeisen komennon hokasimme aivan loppumetreillä ennen kuin meinasimme luovuttaa.
      Toki videon katsominenkin avasi hieman silmiämme.
      Eli, W10:n ja W7:n välillä on hieman eroa noissa esinäkymissä, eikä osattu sitä aluksi epäillä.

      Mutta homma kunnossa ja suuri kiitos taas sulle panostamisesta.

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

    Luetuimmat keskustelut

    1. Olen tosi outo....

      Päättelen palstajuttujen perusteella mitä mieltä minun kaipauksen kohde minusta on. Joskus kuvittelen tänne selkeitä tap
      Ikävä
      16
      2128
    2. Kotkalainen Demari Riku Pirinen vangittu Saksassa lapsipornosta

      https://www.kymensanomat.fi/paikalliset/8081054 Kotkalainen Demari Riku Pirinen vangittu Saksassa lapsipornon hallussapi
      Kotka
      84
      2068
    3. Oletko sä luovuttanut

      Mun suhteeni
      Ikävä
      101
      1367
    4. Hommaatko kinkkua jouluksi?

      Itse tein pakastimeen n. 3Kg:n murekkeen sienillä ja juustokuorrutuksella. Voihan se olla, että jonkun pienen, valmiin k
      Sinkut
      145
      1170
    5. Vanhalle ukon rähjälle

      Satutit mua niin paljon kun erottiin. Oletko todella niin itsekäs että kuvittelet että huolisin sut kaiken tapahtuneen
      Ikävä
      10
      1166
    6. Maisa on SALAKUVATTU huumepoliisinsa kanssa!

      https://www.seiska.fi/vain-seiskassa/ensimmainen-yhteiskuva-maisa-torpan-ja-poliisikullan-lahiorakkaus-roihuaa/1525663
      Kotimaiset julkkisjuorut
      79
      1132
    7. Aatteleppa ite!

      Jos ei oltaisikaan nyt NATOssa, olisimme puolueettomana sivustakatsojia ja elelisimme tyytyväisenä rauhassa maassamme.
      Maailman menoa
      249
      886
    8. Omalääkäri hallituksen utopia?

      Suurissa kaupungeissa ja etelässä moinen onnistunee. Suuressa osassa Suomea on taas paljon keikkalääkäreitä. Mitenkäs ha
      Maailman menoa
      171
      853
    9. Mitä sanoisit

      Ihastukselle, jos näkisitte?
      Tunteet
      62
      821
    10. Onko se ikä

      Alkanut haitata?
      Ikävä
      59
      811
    Aihe