27. august 2008 - 08:32Der er
10 kommentarer og 1 løsning
VBA - Skjul rækker i et område uden indhold
Hej. Jeg har en graf med 10 forskellige serier og dermed også 10 "forklaringer". Men det er sjældent at alle serier har værdi, hvorfor jeg gerne vil undgå, at der vises forklaringer på disse tomme serier (giver et bedre overblik). Jeg kan forstå, at løsningen kan være, at skjule de pågældende rækker. Nogen der kan bidrage med noget VBA kode, som løber et område igennem og skjuler de rækker, som er uden indhold eller bare har værdien 0. Området kunne være: a10:k20
Lidt afhængig af hvor dine overskrifter på tidsserierne er (række 10 eller 11).. Men prøv det her..
Sub SkjulTommeKolonner() Dim skjul As Boolean Dim i As Integer
For i = 1 To 10
If Range("A11").Offset(0, i).Value = 0 Then skjul = True For j = 1 To 9 If Range("A11").Offset(j, i).Value <> 0 Then skjul = False Exit For End If Next j If skjul = True Then Range("A11").Offset(j, i).ColumnWidth = 0 End If
Hej sager - det ser spændende ud. Men, jeg er usikker på nogle ting.
1. Det er rækker, som skal skjules og ikke kolonner 2. Værdierne i rækkerne starter først i kolonne C. (kolonne A er tom og kolonne B = række-overskriften" 3. Der er i alt 10 rækker, hvor værdien i første række starter i celle C82:AA82 Næste række er C83:AA83
Jeg prøvede at omskrive den til denne kode herunder: Men den skjuler også nogle rækker, hvor de første celler er tomme, men ikke alle.
Sub SkjulTommeKolonner() Dim skjul As Boolean Dim i As Integer
For i = 1 To 10
If Range("C83").Offset(i, 0).Value = 0 Then skjul = True For j = 1 To 9 If Range("C83").Offset(i, j).Value <> 0 Then skjul = False Exit For End If Next j If skjul = True Then Range("C83").Offset(i, j).RowHeight = 0 End If
Det ser faktisk ud til, at sidst nævnte kode virker, lige bortset fra, at den skjuler en række, hvor de første 10 celler = 0, men derefter er der værdier. Denne række skal jo ikke skjules. Kan ikke helt gennemskue koden.
Men den tjekker kun om der står 0 i alle celler i den pågældende række. Rækken kan også indeholde tomme værdier "", og hvis det er tilfældet, skal den også skjules. Altså rækker med kun 0 eller "" eller begge dele, skal skjules.
hej.. så er jeg tilbage Jeg misforstod det med rækker/kolonner.. Men du har jo løst det selv :o)
mht dit sidste spørgsmål, så skulle det gerne være sådan at når man spørger på .Value af en celle, så bliver en tom celle vurderet som et nul. Det virkede på min pc. Hvis det er sådan at der står en formel i feltet (som returnerer en tom streng), så kan det måske være noget andet.
Måske du så kan bruge noget a'la
If Range("C83").Offset(i, 0).Value = 0 OR Range("C83").Offset(i, 0) = "" Then
hmmm- det driller. Koden ser nu sådan her ud, men den skjuler ingen rækker, selvom nogle af rækkerne ingen værdier har (der står kun 0 eller helt tom med "") Men alle cellerne har formler. I de 20 første celler, er der 0 og de sidste 5 er der "". Og hvis jeg ændrer "For j = 1 To 25" til "For j = 1 To 19", så den ikke tæller ud i cellerne med "", så virker det fint. Problemet er altså cellerne med "", som den ikke forstår.
Sub SkjulTommeKolonner() Dim skjul As Boolean Dim i As Integer
For i = 1 To 9
If Range("C83").Offset(i, 0).Value = 0 Or Range("C83").Offset(i, 0).Value = "" Then skjul = True For j = 1 To 25 If Range("C83").Offset(i, j).Value <> 0 Or Range("C83").Offset(i, j).Value <> "" Then skjul = False Exit For End If Next j If skjul = True Then Range("C83").Offset(i, j).RowHeight = 0 End If
Men hvis jeg fjerner dit forslag kl. 21:42 OG jeg ændrer cellerne med værdien "" til 0, så virker koden fint. Men så vises min graf forkert, da den så medtager de kolonner, som har 0 i værdi, og det ser lidt dumt ud, at det fylder i grafen. Jeg anvender nemlig "forskydning" og tæller med "tæl", hvor den altså tager værdier med 0, men ikke med " - hvis du forstår.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.