Avatar billede valsoeje Nybegynder
14. december 2005 - 14:17 Der er 12 kommentarer

Hvordan styres Brugerdefineret Autofilter via VBA.

Jeg har en kolonne med datoer for hele 2005. Hvordan kan jeg lade en bruger af mit program vælge samtlige datoer i en bestemt måned ved at taste den første dag i måneden ind i en Userform og så få autofilterets dialogboks til at bruge den dato (eller værdi) som brugeren har valgt ?

Med andre ord drejer mit spørgsmål sig om hvordan man kan få værdier som bliver valgt i Userforms ind i Excels standard dialogbokse.
Avatar billede supertekst Ekspert
14. december 2005 - 14:38 #1
Userformen kan evt. indeholder mulighed for såvel start- som slutdato - herfra kan de overføres til følgende:
    Range("A1").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=1, Criteria1:=">=01-01-2005", Operator:=xlAnd _
        , Criteria2:="<=15-01-2005"

De to viste datoer skal erstattes af variabelnavne
Avatar billede valsoeje Nybegynder
14. december 2005 - 14:44 #2
... ser fornuftigt ud. Jeg er ikke så god til det med variabler - men i det viste eksempel, kan jeg så erstatte 01-01-2005 med eksempelvis Textbox1.value ?
Avatar billede supertekst Ekspert
14. december 2005 - 14:51 #3
Ja - disse variabler kan naturligvis være navnene på tekstboksene i din formular
Avatar billede valsoeje Nybegynder
14. december 2005 - 14:54 #4
Okay. Med hensyn til "Field: =1", er det så noget der refererer til kolonne A ? Jeg tænker på om "Field: =3" så ville sortere i kolonne C ?
Avatar billede bak Forsker
14. december 2005 - 14:58 #5
Private Sub CommandButton1_Click()
  Dim rng As Range
  Dim date1 As Long, date2 As Long
  date1 = DateValue(TextBox1.Value)
  date2 = DateValue(TextBox2.Value)
  Set rng = Range("A1")
  rng.AutoFilter
  rng.AutoFilter Field:=3, Criteria1:=">=" & date1, Operator:=xlAnd, Criteria2:="<=" & date2
End Sub
Avatar billede valsoeje Nybegynder
14. december 2005 - 15:05 #6
Hej bak!
Det ser osse godt ud. Hvis der nu først sorteres i kolonne C (går jeg ud fra), og dernæst skal sorteres i kolonne D, skal jeg så gentage makroen men med " Field:=4" - og så selvfølgelig andre værdier end datoerne ?
Avatar billede bak Forsker
14. december 2005 - 15:17 #7
Nu håber du filtrer og ikke sortere :-)


Private Sub CommandButton1_Click()
  Dim rng As Range
  Dim date1 As Long, date2 As Long

  date1 = DateValue(TextBox1.Value)
  date2 = DateValue(TextBox2.Value)
  Set rng = Range("A1")
  rng.AutoFilter
  rng.AutoFilter Field:=3, Criteria1:=">=" & date1, Operator:=xlAnd, Criteria2:="<=" & date2
  rng.AutoFilter Field:=4, Criteria1:=">=" & var1 , Operator:=xlAnd, Criteria2:="<=" &var2
End Sub
Avatar billede valsoeje Nybegynder
14. december 2005 - 16:23 #8
Ja - *G* jeg filtrerer...
Men noget går galt når jeg vælger 01-11-05 og 10-11-05 i textbox 1 og 2. Der filtreres på 02-11-2009 og 11-11-2009...???
Cellerne er formatterede så 01-11-05 er lig med første november år 2005...
Avatar billede bak Forsker
14. december 2005 - 17:10 #9
prøv lige at skrive 01-11-2005. altså fuldt årstal og fortæl hvad du så får.
Avatar billede and_usa Nybegynder
15. december 2005 - 12:25 #10
Vil man kunne bruge denne funktion til at vælge forskellige dato-ranges ud for derefter at kopiere dem til underark?
Avatar billede valsoeje Nybegynder
15. december 2005 - 12:58 #11
Prøvede lige at skrive 03-11-2005 og 15-11-2005, men der filtreres på 04-11-2009 og 16-11-2009...???
Det har jeg godt nok ikke set før...
Skal der stå Dim date1 As Date, date2 As Date ?
Avatar billede valsoeje Nybegynder
16. december 2005 - 11:11 #12
Kan dette lade sig gøre:

Dim date1 As Long, date2 As Long

date1 = Format(Date, "dd/mm/yy"), date2 = Format(Date, "dd/mm/yy")

...og så resten af koden ?
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