Avatar billede larskoch Nybegynder
11. januar 2011 - 10:33 Der er 18 kommentarer og
1 løsning

Vis kolonne

Har 2 ark

Ark 1 indtastes værdier

A1 = X
A2 = Y
A3 = Z
A4
A5
o.s.v.

Ark 2 indeholder så nogle formler i de enkelte kolonner - disse kolonner er skjulte.

Det jeg gerne vil have er så, eks. hvis A1 er udfyldt så skal kolonne b i ark 2 vises, A2 udfyldt skal kolonne C vises i ark 2 ellers skal kolonner forblive skjulte
Avatar billede Ialocin Novice
11. januar 2011 - 11:02 #1
Haj Larskoch

Kan denne VBA procedure eventuelt bruges.
Det er lavet i den engelske 2003 version af Excel.


I Woorkbook´ens ThisWorkbook modul har jeg følgende kode:


Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Sheet1.Range("A1").Value = "X" Then
        Sheet2.Columns(2).EntireColumn.Hidden = False
       
    Else
        Sheet2.Columns(2).EntireColumn.Hidden = True
       
     
    End If
     
End Sub

Med venlig hilsen, Nicolai
Avatar billede larskoch Nybegynder
11. januar 2011 - 11:14 #2
Er det muligt, at det kun kan omhandle nogle kolonner i ark 2 eks. kolonne a til e således, at de øvrige kolonner kan anvendes uden at blive påvirket af koden ?
Avatar billede Ialocin Novice
11. januar 2011 - 11:19 #3
Hej Larskoch

Ja da ... Er du VBA kyndig ?
Kan du få min kode til at virke / omskrevet til din danske version ??

Med venlig hilsen, Nicolai
Avatar billede larskoch Nybegynder
11. januar 2011 - 11:29 #4
Hmmm... kan ikke få den til at virke hvis jeg ligger den på arket (ark 2) men kan godt hvis det er en ganske alm SUB som jeg kører.................
Avatar billede Ialocin Novice
11. januar 2011 - 11:46 #5
Hej larskoch

Koden skal ligge i hændelsen: Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 

i det generelle workbook modul kaldet: ThisWorkbook

Det betyder, at hvergang der ændres en værdi i din woorkbook, så tjekker workbook´en lige ændringen og udfører de handlinger du har sat op i hændelsen!

Her er en kode, som omhandler cellerne A1, A2, A3, A4 og A5 på sheet1 samt viser/skjuler kolonnerne A-E på sheet2:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
   
   
        'Undersøg adressen, som kalder denne procedure
        Select Case Target.Address
       
       
            'case: celle A1
            Case "$A$1"
           
                'hvis celle A1 på sheet1 er = X
                If Sheet1.Range("A1").Value = "X" Then
                   
                    'vis hele kolonne A på sheet 2
                    Sheet2.Columns(1).EntireColumn.Hidden = False
           
                Else
                   
                    'skjul hele kolonne A på sheet 2
                    Sheet2.Columns(1).EntireColumn.Hidden = True
             
                End If
               
               
            'case: celle A2
            Case "$A$2"
           
                'hvis celle A2 på sheet1 er = Y
                If Sheet1.Range("A2").Value = "Y" Then
                   
                    'vis hele kolonne B på sheet 2
                    Sheet2.Columns(2).EntireColumn.Hidden = False
           
                Else
                   
                    'skjul hele kolonne B på sheet 2
                    Sheet2.Columns(2).EntireColumn.Hidden = True
             
                End If
               
           
            'case: celle A3
            Case "$A$3"
           
                'hvis celle A3 på sheet1 er = Z
                If Sheet1.Range("A3").Value = "Z" Then
                   
                    'vis hele kolonne C på sheet 2
                    Sheet2.Columns(3).EntireColumn.Hidden = False
           
                Else
                   
                    'skjul hele kolonne C på sheet 2
                    Sheet2.Columns(3).EntireColumn.Hidden = True
             
                End If
               
               
            'case: celle A4
            Case "$A$4"
           
                'hvis celle A4 på sheet1 er = Æ
                If Sheet1.Range("A4").Value = "Æ" Then
                   
                    'vis hele kolonne D på sheet 2
                    Sheet2.Columns(4).EntireColumn.Hidden = False
           
                Else
                   
                    'skjul hele kolonne D på sheet 2
                    Sheet2.Columns(4).EntireColumn.Hidden = True
             
                End If
               
           
            'case: celle A5
            Case "$A$4"
           
                'hvis celle A5 på sheet1 er = Ø
                If Sheet1.Range("A5").Value = "Ø" Then
                   
                    'vis hele kolonne E på sheet 2
                    Sheet2.Columns(5).EntireColumn.Hidden = False
           
                Else
                   
                    'skjul hele kolonne E på sheet 2
                    Sheet2.Columns(5).EntireColumn.Hidden = True
             
                End If
               
               
               
        End Select
     

End Sub


Jeg vil også gerne poste dig min Excelfil, hvis det vil en bedre hjælp ??

Med venlig hilsen, Nicolai
Avatar billede Ialocin Novice
11. januar 2011 - 11:52 #6
Hej Larskoch

Sættenissen har drillet lidt i case 5 ...


'case: celle A5
        Case "$A$4" .... 4-tallet skal selvfølgelig være et 5 tal!



Beklager :o)


Mvh Nicolai
Avatar billede larskoch Nybegynder
11. januar 2011 - 11:58 #7
Prøver det lige lidt senere og vender så tilbage......
Avatar billede Ialocin Novice
11. januar 2011 - 12:02 #8
Du gi´r bare lyd :o)
Avatar billede larskoch Nybegynder
11. januar 2011 - 12:13 #9
Hej!

Det virker - jeg lagde det do på arket....

Private Sub Worksheet_Activate()


Så smid et svar så du kan hente point og tusinde tak for hjælpen!
Avatar billede larskoch Nybegynder
11. januar 2011 - 12:14 #10
Hej!

Det virker - jeg lagde det do på arket....

Private Sub Worksheet_Activate()


Så smid et svar så du kan hente point og tusinde tak for hjælpen!
Avatar billede larskoch Nybegynder
11. januar 2011 - 12:31 #11
Kan man gøre den uafhængig af hvilket ark man nu arbejder i. Dvs. at koden også virker på ark 3, 4 5 o.s.v.
Avatar billede Ialocin Novice
11. januar 2011 - 14:48 #12
Hej Lars

Sikkert ...
Jeg skal bare lige forstå, hvad det er der skal virke ...?

Er det kolonnerne der skal skjules på de efterfølgende ark ?



Med venlig hilsen, Nicolai
Avatar billede Ialocin Novice
11. januar 2011 - 14:57 #13
Hej Lars

Jeg vender tilbage i aften, når ungerne er puttet :o)

mvh Nioclai
Avatar billede larskoch Nybegynder
12. januar 2011 - 06:59 #14
Har et indtastningsark "Ark1" - og så er der nogle beregningsark "Ark2", "Ark3", "Ark4"...o.s.v. Disse ark henter de oplysninger der er indtastet i "Ark1" kolonne A. Men der skal kun vises beregninger i forhold til det der er indtastet i Ark1 og derfor skal diverse kolonner skjules i ark2 m.fl.
Avatar billede Ialocin Novice
12. januar 2011 - 08:03 #15
Hej Lars

Er det de samme kolonner på de eferfølgende ark ?
Hvor mange ark drejer det sig om ?
... eller skal vi bare lave princippet i det, som du så selv tilretter, alt efter kolonner / ark antal ?

Ja der er mange spørgsmål herfra :o)


mvh Nicolai
Avatar billede larskoch Nybegynder
12. januar 2011 - 08:07 #16
Hej Nicolai!

Ja det er de samme kolonner og der drejer sig om 5 ark!

Vh. Lars
Avatar billede Ialocin Novice
12. januar 2011 - 09:15 #17
Hej Lars

Jeg ved ikke, hvordan du har fået det til at virke på det enkelte ark med hændelsen: Activate ???

Anyway, nederst er en tilrettet procedure til hændelsen: Workbook_SheetChange i det generelle modul: ThisWorkbook.

Proceduren gemmer kolonnerne på ark2 til ark6 ... og den ta´r ikke højde for om der er oprettet 6 ark ??

Gi´ lyd, hvis du har brug for hjælp.

Med venlig hilsen, Nicolai




Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'tællevariabel til antal ark
Dim ark As Integer



        'Undersøg adressen, som kalder denne procedure
        Select Case Target.Address


            'case: celle A1
            Case "$A$1"

                'gælder for ark 2 til 6
                For ark = 2 To 6
               
                    'hvis celle A1 på sheet1 er = X
                    If Sheet1.Range("A1").Value = "X" Then
                                   
                        'vis hele kolonne A på sheet 2
                        Sheets(ark).Columns(1).EntireColumn.Hidden = False
                       
                    Else
   
                        'skjul hele kolonne A på sheet 2
                        Sheets(ark).Columns(1).EntireColumn.Hidden = True
   
                    End If

                'næste ark
                Next
               

            'case: celle A2
            Case "$A$2"
           
                'gælder for ark 2 til 6
                For ark = 2 To 6

                    'hvis celle A2 på sheet1 er = Y
                    If Sheet1.Range("A2").Value = "Y" Then
   
                        'vis hele kolonne B på sheet 2
                        Sheets(ark).Columns(2).EntireColumn.Hidden = False
   
                    Else
   
                        'skjul hele kolonne B på sheet 2
                        Sheets(ark).Columns(2).EntireColumn.Hidden = True
   
                    End If

                'næste ark
                Next
               

            'case: celle A3
            Case "$A$3"
           
                'gælder for ark 2 til 6
                For ark = 2 To 6

                    'hvis celle A3 på sheet1 er = Z
                    If Sheet1.Range("A3").Value = "Z" Then
   
                        'vis hele kolonne C på sheet 2
                        Sheets(ark).Columns(3).EntireColumn.Hidden = False
   
                    Else
   
                        'skjul hele kolonne C på sheet 2
                        Sheets(ark).Columns(3).EntireColumn.Hidden = True
   
                    End If
                   
                'næste ark
                Next


            'case: celle A4
            Case "$A$4"
           
                'gælder for ark 2 til 6
                For ark = 2 To 6

                    'hvis celle A4 på sheet1 er = Æ
                    If Sheet1.Range("A4").Value = "Æ" Then
   
                        'vis hele kolonne D på sheet 2
                        Sheets(ark).Columns(4).EntireColumn.Hidden = False
   
                    Else
   
                        'skjul hele kolonne D på sheet 2
                        Sheets(ark).Columns(4).EntireColumn.Hidden = True
   
                    End If
                   
                'næste ark
                Next


            'case: celle A5
            Case "$A$5"

                'gælder for ark 2 til 6
                For ark = 2 To 6
               
                    'hvis celle A5 på sheet1 er = Ø
                    If Sheet1.Range("A5").Value = "Ø" Then
   
                        'vis hele kolonne E på sheet 2
                        Sheets(ark).Columns(5).EntireColumn.Hidden = False
   
                    Else
   
                        'skjul hele kolonne E på sheet 2
                        Sheets(ark).Columns(5).EntireColumn.Hidden = True
   
                    End If
               
                'næste ark
                Next



        End Select


End Sub
Avatar billede larskoch Nybegynder
12. januar 2011 - 09:28 #18
Hej Nicolai!

Tak for din indsats - jeg ser på det senere. Lige nu virke den anden kode jeg har lagt på arket - efter hensigten. Du skal nok få en tilbagemelding når jeg har omskrevet din nye fremsendte kode.
Smid et svar så du kan høste dine velfortjente point.

vh. Lars
Avatar billede Ialocin Novice
12. januar 2011 - 10:36 #19
Hej Lars

Hermed et "svar"

Hvis du render ind i bøvl ... så er du velkommen til at sende en mail til nicolaifogt@gmail.com

Med venlig hilsen, Nicolai
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
Kurser inden for grundlæggende programmering

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