Rivin piilotus makrolla?

Oisko jollai vinkkiä miten lähteä toteuttamaan...

Esim. on alue B2:B55, ja makro piilottaisi/poistaisi ne rivit jotka on tyhjiä?
161101
Äänestä

Muut lukivat myös

Vastaukset 16

Vanhimmat

Keksisinkin jo itse, mutta onko paras ratkaisu?

Range("B2:B55").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp

Äänestä
  • oikea ratkaisu...
    tossa nauhoittimen makro siistittynä

    Range("B2:B55").SpecialCells(xlCellTypeBlanks).Delete


    Keep Excel
    @Kunde

    Äänestä

Eikö pikasuodatus käy, sillä saa tyhjät piiloon
ja Poista kaksoiskappaleet, sillä saa tyhjät pois

Äänestä

Jos taulukossa jossain on yksittäisiä tyhjiä soluja, esittämänne makro poistaa nuo tyhjät solut ja samalla sotkee tietorivit. Testasin asian.
Makro toimii tarkoituksenmukaisesti vain jos koko rivi on kokonaan tyhjä.

Aika iso riski mielestäni

Äänestä
  • Sub Piilota()
    For Each solu In Range("B2:B55")
    If solu = "" Then Rows(solu.Row).RowHeight = 0
    Next solu
    End Sub

    Sub Näytä()
    Rows("2:55").EntireRow.AutoFit
    End Sub

    Äänestä

Piru toi ei osaakkaa valita niit soluja mis kaava antaa "" arvon solulle.

Äänestä
  • For i = Range("B2:B55").Cells.Count To 1 Step -1
    If Len(Range("B2:B55").Cells(i)) = 0 Then Range("B2:B55").Cells(i).EntireRow.Delete
    Next i

    Keep EXCELing
    @Kunde

    Äänestä

Toi, siis makroko?

Äänestä

Kiitos kunde, ot sä kyl proo

Äänestä

Osaatkos Kunde sanoa mikä Excelin ominaisuus kun käytän tuota rivien piilotus makroa mutta se siirtää sen alla olevat kaaviot alemmas?

Jos käyn siinä välilehdessä johon se tekee sen piilotuksen niin silloin se ei siirrä niitä kaavioita.

Äänestä

ei mennyt jakeluun...
eli jos suoritat makron esim. taul1 ollessa aktiivinen ja jossa kaavio niin
1. kaavio siirtyy
2. kaavio ei siirry
jos esim. taul 2 aktiivisena ja suoritat makron ja aktivoit sitten taulukon niin
3. kaavio siirtyy
4. kaavio ei siirry
mikä noista toteutuu?

Leep EXCeling
@Kunde

Äänestä

Selitän alusta, eli mulla on välilehti jossa on alussa kaikenlaista tekstiä, sitten on taulukko jossa suoritan yllä olevan makron ja sen alapuolella on kaavioita, mutta kun suoritan makron ilman että käyn itse kyseisellä välilehdellä niin makro siirtää alla olevat kaaviot alespäin.

Eli mulla on taul1 esillä jossa on nappi joka suorittaa makron, eli poistaa kyseiset rivit taul2 jossa myös kaaviot niin silloin siirtyy kaaviot mutta kun käyn taul2 ja menen takaisin taul1 ja painan nappia (suoritan makron) niin kaaviot ei siirry.

Outoa

Äänestä

voitko liittää sen poistokoodin tänne?

Äänestä

Application.Run "suojaus_auki"
Application.ScreenUpdating = False

Sheets("STEP4").Select

Range("A9").Select

For d = Range("A39:A237").Cells.Count To 1 Step -1
If Len(Range("A39:A237").Cells(d)) = 0 Then Range("A39:A237").Cells(d).EntireRow.Delete
Next d

Sheets("Kaaviot").Select

Range("A2:B205").Select
ActiveWorkbook.Worksheets("Kaaviot").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Kaaviot").Sort.SortFields.Add Key:=Range("B2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Kaaviot").Sort
.SetRange Range("A3:B205")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A208:B411").Select
ActiveWorkbook.Worksheets("Kaaviot").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Kaaviot").Sort.SortFields.Add Key:=Range("B208"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Kaaviot").Sort
.SetRange Range("A209:B411")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A415:B618").Select
ActiveWorkbook.Worksheets("Kaaviot").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Kaaviot").Sort.SortFields.Add Key:=Range("B415"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Kaaviot").Sort
.SetRange Range("A416:B618")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

For c = Range("B417:B618").Cells.Count To 1 Step -1
If Len(Range("B417:B618").Cells(c)) = 0 Then Range("B417:B618").Cells(c).EntireRow.Delete
Next c

For b = Range("B210:B411").Cells.Count To 1 Step -1
If Len(Range("B210:B411").Cells(b)) = 0 Then Range("B210:B411").Cells(b).EntireRow.Delete
Next b

For a = Range("B4:B205").Cells.Count To 1 Step -1
If Len(Range("B4:B205").Cells(a)) = 0 Then Range("B4:B205").Cells(a).EntireRow.Delete
Next a

Sheets("Laskenta").Select

Application.ScreenUpdating = False
Application.Run "suojaus_kiinni"

Äänestä

Unohda toi äsköinen, siis siinä taulussa jossa kaaviot siirtyy niin tekee tämän makron

Sheets("STEP4").Select

Range("A9").Select

For d = Range("A39:A237").Cells.Count To 1 Step -1
If Len(Range("A39:A237").Cells(d)) = 0 Then Range("A39:A237").Cells(d).EntireRow.Delete
Next d

Äänestä
  • en kyllä nyt keksi mitään syytä miksi makro toimii eritavoin eripaikasta...
    koodin lopussa sulla on
    Application.ScreenUpdating = False
    ehkäpä se pitäisi olla
    Application.ScreenUpdating = True
    mutta ei se auta tohon siirtymiseen mun mielestä.Seuraava ohje ainaskin estää taulukon liikkumisen...

    klikkaa kaaviota hiren oikealla ja avautuvasta valikosta klikkaa sitä alinta muotoile kaavio aluetta.
    Sitten avautuvasta valikosta klikkaat vasemmalta ominaisuudet ja edelleen aukeavasta valitse ylhäältä objektin apaikan vaihtoehdoista se alin eli älä siirrä ja muuta kokoa solujen mukaan.
    En tiedä mten noi on kirjoitettu suomiversiossa, mutta jotain sinne päin kuiteskin...
    .
    taai lisää koodiin...

    ActiveSheet.ChartObjects("KAAVION NIMI").Placement = xlFreeFloating

    Auttoiko?

    Keep EXCELing
    @Kunde

    Äänestä

Kommentoi aloitusta


15+19 kirjoitti:

Oisko jollai vinkkiä miten lähteä toteuttamaan...

Esim. on alue B2:B55, ja makro piilottaisi/poistaisi ne rivit jotka on tyhjiä?

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