Just nu i M3-nätverket
Gå till innehåll

Döj tomma kolumner med ett makro


Payman

Rekommendera Poster

Hej.

 

Jag behöver dölja alla kolumner som är helt tomma. Området är E2:FQ300.

Med tommar menar att det inte finns nån data alls i cellerna.

 

Jag har ett makro för att visa alla kolumner igen men har inte hittat nåt fungerande makro för att dölja.

 

Tyvärr så är jag inte så slängt i VB så jag har svårt att modifiera nästan fungerande makron.

 

MVH

 

Patrick Arkley

 

 

 

Länk till kommentar
Dela på andra webbplatser

Helt tomma kolumner? hur ska man kolla det på bra sätt... funderar...

 

Är de alltid tomma, du vet i förväg att alla ska döljas eller är det föränderligt?

 

Asch, jag antar att det är föränderligt. Denna tar fram kolumner med värden och döljer de utan

 Dim rnHideArea As Range
   Dim col As Range
   Dim rwMax As Long
   Set rnHideArea = Me.Range("A:F")
   rwMax = Range("A:A").Cells.Count
   For Each col In rnHideArea.Columns
       col.Hidden = (col.Cells(1, 1).End(xlDown).Row = rwMax And col.Cells(1, 1) = "")
   Next col

 

fast denna utgår från att det inte finns några värden i kolumnerna...kanske inte riktigt vad du villa ha?

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Hej.

 

X-axel är datum 1/1-31/12. Sedan fyller man i celler med projektnr nedåt. Då arket blir jävligt brett så ska makrot döjla alla kolumner som inte har ett projektnr.

Ska man sedan fylla i mer så får man visa alla kolumner, fylla på med nytt data och sedan kör dölj-makrot igen.

 

JAg testade ditt exempel och fick "invalid use of Me keyword". Jag undrar även vad jag ska stoppa in i: rwMax = Range("A:A").Cells.Count

Måste jag ändra A:A?

 

Set rnHideArea = Me.Range("A:F") ändrar jag till Set rnHideArea = Me.Range("E2:FQ300"). Tyvärr så kan jag inte välja E:FQ då jag har datum på rad 1.

 

/Patrick

 

Länk till kommentar
Dela på andra webbplatser

Om du har värden på rad ett så får vi göra om det hela en aning.

 Dim rnHideArea As Range
   Dim col As Range
   Dim rwMax As Long
   Set rnHideArea = Blad1.Range("A:F")
   rwMax = Range("A:A").Cells.Count
   For Each col In rnHideArea.Columns
       col.Hidden = (col.Cells(1, 1).End(xlDown).Row = rwMax)
   Next col

 

Me - referens på bladet koden är skiven på. Ovan bytt mot VBAs bladnamn.

 

rwMax = range - räknar ut antalet rader i en kolumn. Skiljer sig mellan Excel 2007 och tidigare version. Inte mellan olika kolumner :)

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Äh, jag får Run time error 424 - object required.

 

Set rnHideArea = WMH.Range("E2:FQ300")

 

/Patrick Arkley

 

Länk till kommentar
Dela på andra webbplatser

troligtvis fel referens till bladet. Notera att namnet du ska använda är det som finna i VBA-miljön, inte det du skrivit i Excel-miljön. Dvs till vänster i projekthanteraren finns det ett namn. Titta/ändra där.

 

ed:

Eller adressera med

Worksheets("Bladnamn")

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

 

[inlägget ändrat 2009-01-11 23:19:24 av Monshi]

Länk till kommentar
Dela på andra webbplatser

Du har rätt. I VBA hette det Sheet2. Det funkar även om jag måste "öppna" mina grupperingar först.

 

Tack.

 

/PAtrick Arkley

 

Länk till kommentar
Dela på andra webbplatser

Ah, du grupperar dina data. Kanske man ska nyttja dessa istället för att helt dölja...testar lite...nej, det verkar inte vara enkelt...

 

Fast med kunskap om hur man arbetar med bladet så kan man skapa en lösning men kanske bättre då att lägga till en liten knapp som tar fram nästa kolumn istället för att gruppera/disponera i olika nivåer.

 

Ja, vad sägs?

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Jag är nöjd för nu. Syftet uppnått.

 

Det är för frugan och hon kanske inte ens använder det i slutändan.

 

/Patrick

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...