Avatar billede ogodt Nybegynder
31. maj 2010 - 16:31 Der er 9 kommentarer og
1 løsning

Lave makro til betinget formatering og skjul koloner

Hej,

jeg har et regneark som er delt op så 3 kolonner hører sammen (feks. a+b+c, d+e+f, osv) jeg vil gerne lave en makro hvor nogle sæt af kolonner bliver skjult hvis ikke de opfylder nogle kriterier:

Eksempel:

jeg har via betinget formatering lavet det sådan at hvis der er udfyldt noget i B2 så skal baggrundsfarve være rød, dette er lavet på hele regnearket ved hver 3 kolonne, så hvis foreksempel B2 ikke er udfyldt skal kolonne A+B+C skjules, og hvis B2 + E2 ikke er udfyldt skal A+B+C og D+E+F skjules, men hvis f.eks. B2 er udfyldt skal A+B+C stadigvæk vises og kun D+E+F skjules.

Jeg håber det giver mening og der er en der har en løsning på det.

\Ole
Avatar billede natkatten Mester
31. maj 2010 - 19:52 #1
Hvad med denne:

Sub SkjulKolonner()
    If Range("B2").Value = 0 And Range("E2").Value = 0 Then
        Columns("A").EntireColumn.Hidden = True
        Columns("B").EntireColumn.Hidden = True
        Columns("C").EntireColumn.Hidden = True
        Columns("D").EntireColumn.Hidden = True
        Columns("E").EntireColumn.Hidden = True
        Columns("F").EntireColumn.Hidden = True
    ElseIf Range("B2").Value = 0 Then
        Columns("A").EntireColumn.Hidden = True
        Columns("B").EntireColumn.Hidden = True
        Columns("C").EntireColumn.Hidden = True
    ElseIf Range("E2").Value = 0 Then
        Columns("D").EntireColumn.Hidden = True
        Columns("E").EntireColumn.Hidden = True
        Columns("F").EntireColumn.Hidden = True
    Else
        Columns("A").EntireColumn.Hidden = False
        Columns("B").EntireColumn.Hidden = False
        Columns("C").EntireColumn.Hidden = False
        Columns("D").EntireColumn.Hidden = False
        Columns("E").EntireColumn.Hidden = False
        Columns("F").EntireColumn.Hidden = False
    End If
End Sub
Avatar billede ogodt Nybegynder
01. juni 2010 - 09:30 #2
Super :-)

Det virker perfekt - nu skal jeg bare have den udvidet (har jeg lige fundet ud af), det skal være: (Hvis "B2-B9+B11-B18" eller "C2-C9+C11-C18" er tomme = Hide A+B+C) - (hvis der står noget i ET af disse felter = ingenting) Dette skal jeg så have lavet for ca. 30 kolonner af sæt med 3.

Igen - jeg håber det giver mening.
Avatar billede ogodt Nybegynder
01. juni 2010 - 13:38 #3
Nu har jeg arbejdet lidt videre med det og er kommet frem til det her - som virker med 3 rækker_

Sub skujl_kolonner()
  Dim Cell As Object
  ' Hvis S7:T13,S19:T25 er stoerre end 0
  For Each Cell In Range("S7:T13,S19:T25")
  If Cell > 0 Then

        ' Goer ingenting.
        Columns("R").EntireColumn.Hidden = False
        Columns("S").EntireColumn.Hidden = False
        Columns("T").EntireColumn.Hidden = False

  Else
        ' Skjuler kolonne R S T
        Columns("R").EntireColumn.Hidden = True
        Columns("S").EntireColumn.Hidden = True
        Columns("T").EntireColumn.Hidden = True
       
 
  End If
  Next Cell
 
End Sub

men jeg fatter ikke hvordan jeg udvider den til flere sæts 3 kolonner - f.eks U+V+W

nogen der kan det??
Avatar billede ogodt Nybegynder
02. juni 2010 - 15:01 #4
Hej,

er der ikke nogen der har et forslag ??

\Ole
Avatar billede newbieatphp Nybegynder
03. juni 2010 - 14:48 #5
har du lavet det i et ark, som du evt. kan sende... så er det nemmere for mig, at få et overblik over hvad det er præcis du mener?

mail: mit-alias @ hotmail . com
Avatar billede ogodt Nybegynder
03. juni 2010 - 15:10 #6
Lyder godt.

Vil du have med den makro der indtil nu "duer", eller uden makro.
Avatar billede newbieatphp Nybegynder
03. juni 2010 - 15:14 #7
ja, bare send det du har :)
Avatar billede newbieatphp Nybegynder
03. juni 2010 - 21:12 #8
Jeg skulle vist have et forslag til det nu ... jeg skal blot have på plads omkring hvad der skal skjules og hvad der ikke skal...

læs evt. post-besked :)
Avatar billede newbieatphp Nybegynder
08. juni 2010 - 17:37 #9
Dette var hvad det blev til. Nogle ting kan måske gøres anderledes, men skulle virke efter spørgers hensigt:

Sub gemKolonne()

Dim i As Integer
Dim tael As Integer
Dim ugetaeller As Integer
Dim uger As Integer

ugetaeller = 1
uger = 5

Range("D7").Select

While (ugetaeller <= uger)
    i = 0
    tael = 0
    While (tael < 7)
        tael = tael + 1
        i = i + ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        i = i + ActiveCell.Value
        ActiveCell.Offset(1, -1).Select
    Wend

    tael = 0
    ActiveCell.Offset(5, 0).Select

    While (tael < 7)
        tael = tael + 1
        i = i + ActiveCell.Value
        ActiveCell.Offset(0, 1).Select
        i = i + ActiveCell.Value
        ActiveCell.Offset(1, -1).Select
    Wend

    If i > 0 Then
        'hvis der er en værdi over 0
        Selection.EntireColumn.Select
        Selection.EntireColumn.Hidden = False

        Else
        'Hvis der ikke er en samlet værdi over 0
        Selection.EntireColumn.Select
        Selection.EntireColumn.Hidden = True
    End If

    ActiveCell.Offset(6, 3).Select
    ugetaeller = ugetaeller + 1
Wend

End Sub
Avatar billede ogodt Nybegynder
09. juni 2010 - 08:15 #10
Det var nøjagtig hvad jeg ledede efter, og den virker perfekt.

/Ole
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester