HaKj Skrevet 6. desember 2011 Del Skrevet 6. desember 2011 Hei Jeg holder på med en oppgaveliste i Excel. I denne listen har jeg flere kolonner med filter på. Jeg har laget en makro til hvert filter og knapp til hver makro, men synes det blir for mange knapper å holde styr på. Jeg tenker da at jeg kan lage en dialogboks hvor jeg kan huke av de forskjellige kriteriene for sortering. F.eks kolonne 1: hvor jeg har et felt som heter prioritet med valgene høy, middels, lav Disse valgene har jeg i en tabell på ark 2. For å dele dette opp litt så spør jeg om følgende: 1.Hvordan får jeg det slik at dialogboksen lister opp de kriteriene som ligger i den tabellen som er koblet til kolonne 1? Hilsen Harald Lenke til kommentar
Harald Staff Skrevet 6. desember 2011 Del Skrevet 6. desember 2011 Hei Harald. Lag en userform med en liste Listbox1. Så denne koden i initialize-eventet: Private Sub UserForm_Initialize() Dim R As Long With Sheets("Ark2") For R = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row Me.ListBox1.AddItem .Cells(R, 1).Value Next End With End Sub HTH. Beste hilsen Harald Lenke til kommentar
HaKj Skrevet 6. desember 2011 Forfatter Del Skrevet 6. desember 2011 Takker Dette funker i kolonne 1. (Jeg har omdøpt ark1 til ref og R til A) Private Sub UserForm_Initialize() Dim A As Long With Sheets("ref") For A = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row Me.ListBox1.AddItem .Cells(A, 1).Value Next End With End Sub To spørsmål til: 1. Hvordan får jeg den til å starte tellingen i kolonne 1, rad 3? 2. Jeg ønsker å liste opp tre kolonner på denne userformen. Slik at jeg kan velge kriterier ut fra tre kolonner. F.eks. kolonne 1 (A), 2 (B), og 3©. Kan det gjøres enkelt? Takk for hjelp! Lenke til kommentar
Harald Staff Skrevet 6. desember 2011 Del Skrevet 6. desember 2011 Javist. 1: For A = 3 To .Cells(.Rows.Count, 1).End(xlUp).Row 2: Dersom kolonnene er av forskjellig lengde, må du finne siste celle for hver, slik: .Cells(.Rows.Count, 2).End(xlUp).Row 'b-kolonnen .Cells(.Rows.Count, 3).End(xlUp).Row 'c-kolonnen Så Me.ListBox2.AddItem .Cells(A, 2).Value 'b-kolonnen Me.ListBox3.AddItem .Cells(A, 3).Value 'c-kolonnen HTH. Beste hilsen Harald Lenke til kommentar
HaKj Skrevet 7. desember 2011 Forfatter Del Skrevet 7. desember 2011 Flott Nå har jeg gjort det slik som dette. Private Sub UserForm_Initialize() Dim A As Long With Sheets("ref") For A = 3 To .Cells(.Rows.Count, 1).End(xlUp).Row Me.ListBox1.AddItem .Cells(A, 1).Value 'a-kolonnen Next For B = 3 To .Cells(.Rows.Count, 1).End(xlUp).Row Me.ListBox2.AddItem .Cells(B, 2).Value 'b-kolonnen Next For C = 3 To .Cells(.Rows.Count, 1).End(xlUp).Row Me.ListBox3.AddItem .Cells(C, 3).Value 'c-kolonnen Next End With End Sub For å komme videre nå, så må jeg vel koble de valgene jeg gjør mot en makro som filtrerer hver kolonne ut fra det valget jeg har gjort i hver listbox. Denne makroen må vel tilordnes OK - knappen. F.eks noe slikt som dette: Private Sub CommandButton1_Click() ActiveSheet.Range("$B$7:$J$26").AutoFilter Field:=4, Criteria1:=ListBox1.Value ActiveSheet.Range("$B$7:$J$26").AutoFilter Field:=5, Criteria1:=ListBox2.Value ActiveSheet.Range("$B$7:$J$26").AutoFilter Field:=8, Criteria1:=ListBox3.Value Me.hide End Sub Problemet mitt nå er at den legger på filter på alle tre kolonnene uansett, skulle gjerne hatt en måte å veksle mellom hvilken kolonne jeg legger filter på, slik at de jeg ikke velger noe kriterie for blir stående uten filter. Harald Lenke til kommentar
Harald Staff Skrevet 7. desember 2011 Del Skrevet 7. desember 2011 Hei igjen Harald Hvis du ikke har valgt noe i en Listbox så har den Listindex = -1. Altså: If Listbox1.Listindex >= 0 then ActiveSheet.Range("$B$7:$J$26").AutoFilter Field:=4, Criteria1:=ListBox1.Value Beste hilsen Harald Lenke til kommentar
HaKj Skrevet 8. desember 2011 Forfatter Del Skrevet 8. desember 2011 Takk for hjelpen, nå fungerer den utmerket. Håper ikke jeg maser for mye her. Et spørsmål til: Jeg har en kolonne på slutten som jeg skriver "ok" i når oppgaven er utført. Jeg kunne tenkt meg en boks i userformen som gjør at alle cellene i den kolonnen som det står ok i, blir filtrert bort, F.eks noe slikt?: Private Sub CheckBox1_Click() If CheckBox1 = True Then ActiveSheet.Range("$B$7:$J$26").AutoFilter Field:=9, Criteria1:="ok" Else ActiveSheet.Range("$B$7:$J$26").AutoFilter Field:=9, Criteria1:="ok" End Sub Får det ikke til å funke helt som jeg ville. Noen forslag? Lenke til kommentar
HaKj Skrevet 8. desember 2011 Forfatter Del Skrevet 8. desember 2011 Hei Nå fikk jeg det til. Jeg måtte bare legge koden i slutten av koden til userformen og ikke som en handling som skjer når checkboxen markeres. Slik: If CheckBox1 = True Then ActiveSheet.Range("$B$7:$J$26").AutoFilter Field:=9, Criteria1:="-" Else ActiveSheet.Range("$B$7:$J$26").AutoFilter Field:=9 Det dukket opp et nytt problem nå: Tabellen hvor kriteriene som vises i listbox'ene lastes ikke inn på nytt hver gang jeg åpner userformen. Hvis jeg legger til et kriterie i tabellen, så kommer det ikke med i listboxen. Hvordan får jeg til det? Lenke til kommentar
HaKj Skrevet 8. desember 2011 Forfatter Del Skrevet 8. desember 2011 En annen ting som hører til samme malen. Jeg har en makro som jeg ønsker at skal kopiere rad 4, og lime denne inn over rad 8. Den må også telle radene fra 8 og nedover som inneholde tall. Så ønsker jeg at den setter inn dette tallet pluss 1 i celle A8. Jeg prøvde å få det til via makroregistrering men det fikk ikke helt bra. så prøvde jeg å legge inn noe av koden fra userformen, men får det ikke helt til. Limte inn makrokoden som jeg har kommet frem til nå: Sub SettInn() ' ' SettInn Makro ' ' Dim t As Long With ActiveSheet() For t = 7 To .Cells(.Rows.Count, 1).End(xlUp).Row Next End With Rows("4:4").Copy Rows("8:8").Select Selection.Insert Shift:=xlDown Rows("8:8").Hidden = False Range(A8).Select Range(A8).Value = t Range("C8").Select End Sub Kan du hjelpe meg med denne også? Lenke til kommentar
Harald Staff Skrevet 8. desember 2011 Del Skrevet 8. desember 2011 Dette skjønte jeg ikke noe av. Men det har så vidt jeg forstår ingenting å gjøre i tråden "Makro for filter i Excel". Start en ny tråd når emnet endrer seg, ellers er det umulig å finne frem for nåværende lesere og fremtidige søkere i arkivet. Beste hilsen Harald Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå