Forfatter |
Emne Søg Emne funktioner
|
RogerMoore
Forum Begynder
Medlem: 20.Sep.2010
Land: Danmark
Status: Offline
Point: 5
|
Emne: VBA kode Sendt: 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
|
|
|
|
|
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
Sendt: 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
|
|
RogerMoore
Forum Begynder
Medlem: 20.Sep.2010
Land: Danmark
Status: Offline
Point: 5
|
Sendt: 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.
|
|
RogerMoore
Forum Begynder
Medlem: 20.Sep.2010
Land: Danmark
Status: Offline
Point: 5
|
Sendt: 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:)
|
|
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
Sendt: 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 øverst i editoren når du skrive næste besked.
Så vil jeg kunne tilgå din fil.
//Allan
|
|
RogerMoore
Forum Begynder
Medlem: 20.Sep.2010
Land: Danmark
Status: Offline
Point: 5
|
Sendt: 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
|
|
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
Sendt: 22.Sep.2010 kl. 11:01 |
Hej Jacob,
Jeg har lavet en kodestump til dig, jeg håber den kan bruges.
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
|
|
RogerMoore
Forum Begynder
Medlem: 20.Sep.2010
Land: Danmark
Status: Offline
Point: 5
|
Sendt: 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? :)
|
|
Allan
Forum Admin
Forum Admin
Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
|
Sendt: 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
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)
//Allan
|
|