Autofilter icm checkbox (formulierbesturingselement)

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • sph1980
  • Registratie: Januari 2014
  • Laatst online: 25-01 20:25
Hallo,

Ik heb in mijn boekhouding tab "ORDERS" best veel rijen en deze wil ik met checkboxen filteren op "factuur voldaan" / "factuur open" / "factuur in database" / "factuur loopt"

BingAI komt met volgende code:

Deze doet niets, je ziet het scherm een keer knipperen maar alle typen facturen blijven staan:
Sub Selectievakje16_Klikken()

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("ORDERS")

ws.AutoFilterMode = False

If Selectievakje16 = True Then
ws.Range("A3:ZZ1000").AutoFilter Field:=16, Criteria1:="=FACTUUR VOLDAAN"
Else
ws.Range("A3:ZZ1000").AutoFilter Field:=16, Criteria1:="<>"
End If

End Sub
Heb deze aangepast om te zien waar de fout ligt,
dit werkt wel maar hiermee heeft de checkbox uitschakelen geen zin:
Sub Selectievakje16_Klikken()

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("ORDERS")

ws.AutoFilterMode = False
ws.Range("A3:ZZ1000").AutoFilter Field:=16, Criteria1:="=FACTUUR VOLDAAN"

End Sub
Nu vraag ik mij af of autofilter in vba kan omgaan met if..then..else

De cellen in P3:P1000 bevatten allemaal dezelfde formule welke bepaald of een factuur is verstuurd of dat deze nog wacht of dat de factuur in de database staat. Nu zou dat niets mogen uitmaken omdat in het 2e stukje vba de code wel werkt 8)7

[ Voor 12% gewijzigd door sph1980 op 19-01-2025 14:48 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Ik heb de indruk (maar ik kan me vergissen) dat je voor eenzelfde probleem twee oplossingen gebruikt / wil gebruiken. Enerzijds een checkbox (factuur 'verstuurd' of factuur 'in database') en anderzijds wil je dat ook nog een keer met een formule checken. Best is 1 van de 2 gebruiken lijkt mij.

Acties:
  • 0 Henk 'm!

  • sph1980
  • Registratie: Januari 2014
  • Laatst online: 25-01 20:25
Ik heb nu per factuurstatus een keuzerondje, dat wil wel goed want die rondjes heffen elkaar op
Wel had ik graag checkboxes gehad, want dan kun je op meerdere argumenten filteren.

Acties:
  • 0 Henk 'm!

  • dixet
  • Registratie: Februari 2010
  • Laatst online: 09:41
ik zou beginnen deze code boven in je module te zetten (dus nog boven Sub Selectievakje16_Klikken() )
code:
1
Option Explicit

Zonder deze code heeft VBA de onhebbelijke eigenschap ongedefinieerde variabelen zelf te aan te maken op het moment dat je er naar verwijst met volledig onverwacht gedrag tot gevolg. Daarom geeft je code geen foutmelding op
code:
1
If Selectievakje16 = True Then
maar maakt VBA op dat moment een variabele genaamd Selectievakje16 voor je aan van het type Variant met als waarde Empty.

Empty != True dus je code komt altijd in je Else tak.

De correcte manier om naar je checkbox te verwijzen is
code:
1
ThisWorkbook.Worksheets("ORDERS").CheckBoxes("Selectievakje16").Value


of, als je er vaker naar wilt verwijzen in 1 procedure
code:
1
2
Dim Selectievakje16 As CheckBox
Set Selectievakje16 = ThisWorkbook.Worksheets("ORDERS").CheckBoxes("Selectievakje16")


Waarom wil je dit overigens oplossen met VBA? Je kan gewoon AutoFilter in je sheet aanzetten en dan filteren op de factuurstatus. Is een stuk minder foutgevoelig.

[ Voor 46% gewijzigd door dixet op 21-01-2025 08:32 ]


Acties:
  • 0 Henk 'm!

  • sph1980
  • Registratie: Januari 2014
  • Laatst online: 25-01 20:25
Ah vandaar. Duidelijk verhaal.
Dit werkt, bedankt.

Ik vind autofilter grafisch niet echt mooi en wil eea graag overzichtelijk houden.