Print side | Luk vindue

VBA kode

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=89
Udskrevet den: 27.Nov.2024 kl. 04:16


Emne: VBA kode
Besked fra: RogerMoore
Emne: VBA kode
Posteringsdato: 20.Sep.2010 kl. 21:55
Jeg søger en VBA Excel haj!

Jeg skal have lave noget kode i Excel som rækker ud over min fantasi, så jeg håber der er en af Jer der kan hjælpe.

Jeg har lavet et oplysningsark og et dataark. I dataarket har jeg en masse rækker, der kun er relevante, hvis jeg i oplysningsarket har skrevet "ja" ved relevant. Kan man skrive en kode der skjuler rækker, afhængigt af hvad jeg svarer i oplysningsarket? 
Og hvis ja, kan man evt. skrive en kode der kan tage højde for flere svar i oplysningsarket, fx. at hvis jeg har fem spørgsmål der hver især henviser til nogle rækker, så kan Excel automatisk skjule rækkerne alt efter hvad jeg har svaret i spørgsmålene.

Hvis alt dette er muligt, og en af Jer vil hjælpe, kan man så evt. også gøre skjulningen af rækkerne afhængigt af et kriterie i søjle 1?

Fx. hvis jeg svarer ja i spørgsmål 1, skal jeg kun have vist alle rækker hvori bogstavet A står i søjle 1, hvis jeg svarer ja i spørgsmål 2, skal jeg kun have vist alle række hvori bogstavet bogstavet B stør i søjle 1 osv.

Nogen der kan hjælpe?

På forhånd tak 



Svar:
Besked fra: Allan
Posteringsdato: 21.Sep.2010 kl. 09:45
Hej,
 
Lad os starte for en ende af.
Makroen til at skjule rækker som indeholder en bestemt værdi, er her.
Denne kigger i A1:A10 efter værdien 1 (Det kan du selv ændre
 
Option Explicit
Sub skjul_ved_kriterie()
Dim Vaerdi As String, r As Object
Vaerdi = 1
For Each r In Range("A1:A10").Cells
    If r.Value = Vaerdi Then r.EntireRow.Hidden = True
Next r
End Sub
 
 
Du kan evt oploade dit ark til forummet, så kan jeg lægge koden ind i dit ark efterhånden som vi finder løsninger.
 
//Allan


Besked fra: RogerMoore
Posteringsdato: 21.Sep.2010 kl. 10:01
Der skulle næsten være to kriterie, sådan så jeg i mit oplysningsark fx havde fem spørgsmål og afhængigt af i hvilket af spørgsmålene svarede ja, så skulle den skjule alle række pånær dem der er associeret med det spørgsmål jeg svarede ja i.

Sekvensen kunne være: Oplysningsark indeholder 5 som. med svarmuligheder ja/nej. Dataark med en masse rækker der hver er associeret med spm. i oplysningsarket.

Fx jeg svarer ja i spm. 1 så skal Excel skjule alle rækker der indeholder 1 i kolonne 1. Hvis jeg svarer ja i spm. 2 så skal Excel skjule alle rækker der indeholder 2 i kolonne 1.


Besked fra: RogerMoore
Posteringsdato: 21.Sep.2010 kl. 10:02
Eksemplet skulle selvfølgelig have været at hvis jeg svarede ja i spm. 1 så skal Excel skjule alle rækker pånær dem hvor der står 1 i kolonne 1 osv. Håber det giver mening:)


Besked fra: Allan
Posteringsdato: 21.Sep.2010 kl. 22:17
Lad os kigge på det.
Det vil være nemmere hvis du lægger din fil (Eller en som ligner) op i forummet
Du skal bare bruge knappen Fil øverst i editoren når du skrive næste besked.
Så vil jeg kunne tilgå din fil.
 
//Allan


Besked fra: RogerMoore
Posteringsdato: 22.Sep.2010 kl. 09:20
Hej Allan
 
Jeg har her vedhæftet et eksempel. Meningen er så at hvis jeg svarer "Ja" i spm. 1 i oplysningsarket, så skal jeg kun have vist rækker hvor det associerede bogstav A indgår i kolonne 1 i dataarket, hvis jeg svarer "Ja" i spm. 2 i oplysningsarket, så skal jeg kun have vist rækker hvor det associerede bogstav B indgår i kolonne 1 i dataarket osv.
 
Hvis det er muligt at kode det sådan så, man ved at svarer "Ja" flere steder, får flere rækker ud med associerede bogstaver, ville det ikke gøre noget.
 
Og på forhånd tak for din hjælp.
 
Venligst
Jacob
 
/uploads/83/Mappe2.xls - uploads/83/Mappe2.xls


Besked fra: Allan
Posteringsdato: 22.Sep.2010 kl. 11:01
Hej Jacob,
 
Jeg har lavet en kodestump til dig, jeg håber den kan bruges.
Selve arket har jeg lagt her: /uploads/1/Skjul_rækker_ved_ja_eller_nej.xls - uploads/1/Skjul_rækker_ved_ja_eller_nej.xls
 
Selve koden tager højde for at du kan lave kombinationen af ja og nej i dit spørgeskema som du vil, rækkerne vil blive vist eller skjult helt automatisk. 
 
Virker det efter hensigten?
 
//Allan
 
Koden jeg har brugt, kan ses her:
Den ligger i dit regneark under 'Oplysningsark'
 
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 3 Or Target.Value = "" Or Target.Offset(0, 1).Value = "" Then Exit Sub
Dim r As Object, ra As Object
For Each ra In Ark1.Range("C2:C6").Cells
    If ra.Value = "Ja" Then
        For Each r In Ark2.Range("A1:A50").Cells
            If r.Value = ra.Offset(0, 1).Value Then r.EntireRow.Hidden = False
        Next r
    End If
    If ra.Value = "Nej" Then
        For Each r In Ark2.Range("A1:A50").Cells
            If r.Value = ra.Offset(0, 1).Value Then r.EntireRow.Hidden = True
        Next r
    End If
Next ra
End Sub
 


Besked fra: RogerMoore
Posteringsdato: 27.Sep.2010 kl. 11:41
Det er smukt. Tak for din hjælp.
 
Hvordan har du lavet dropdown menuerne med svarmuligheder ja/nej?
 
Og har du evt. et bud på, hvor på nettet man kan læse sig til at blive en VBA haj? :)


Besked fra: Allan
Posteringsdato: 29.Sep.2010 kl. 22:07
Velbekomme, tak for din tilbagemelding.
 
Dropdown'en, er en datavalidering, som på simpel vis laver en liste som kan være så lang man ønsker.
 
I Excel 2007 finde denne liste på båndet / Datavalidering / Datavalidering /
Under valideringskriterier vælger du 'Liste'
Unde 'Kilde' kan du skrive værdier separeret med semikolon (;) eller referere direkte til et område i din regneark indeholdende data til listen.
 
 
Af VBA-bøger ved jeg såmænd ikke hvad jeg kan anbefale, da man efter min mening kommer længst med nysgerrighed, stædighed, gentagne forsøg, gentagne forsøg og stædighed LOL
En som kan sit kram er John Walkenbach, han har udgivet en masse bøger som helt klart er værd at investere i, mest fordi de er gode som opslagsværker. (Husk at de mest geniale idéer en programmør får, opstår i den periode hvor han eller hun ikke helt har fat i sproget endnu)
http://spreadsheetpage.com/ -
 
John Walkenbachs bøger: http://www.saxo.com/dk/author/john-walkenbach.aspx?gclid=CNqf4921raQCFQkrDgodX3V1cQ - http://www.saxo.com/dk/author/john-walkenbach.aspx?gclid=CNqf4921raQCFQkrDgodX3V1cQ
 
//Allan
 
 



Print side | Luk vindue