Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: zoeken, weergeven, formulieren  (gelezen 2715 keer)

0 leden en 1 gast bekijken dit topic.

Offline Penny

  • Lid
  • *
  • Berichten: 41
  • I'm gonna live till I die.
zoeken, weergeven, formulieren
« Gepost op: 08 februari 2008, 17:33:28 »
Een goede avond beste excellers,

Bijgevoegd een werkblad waarin ik nog met enkele probleempjes zit.

- Hoe kan je via een commando alle textvakken op een formulier terug leegmaken?

- het formulier "Zoeken" dient om op een gemakkelijke manier filters uit te voeren op de kolommen.
het probleem is dat ik met kolommen werk die wijzigen, verplaatsen, bijvoegen, ... (daarom dat ik gebruik maak van een code + omschrijving)
Hoe kan ik dit oplossen?

Mvg
Penny

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: zoeken, weergeven, formulieren
« Reactie #1 Gepost op: 08 februari 2008, 20:36:17 »
Penny,
Citaat
Hoe kan je via een commando alle textvakken op een formulier terug leegmaken?
Gebruik daarvoor dit codeblokjePrivate Sub btn_Clear_Click()
Dim ctrl As Control

    For Each ctrl In Me.Controls
        If TypeOf ctrl Is msforms.TextBox Then ctrl.Text = ""
    Next ctrl
   
End Sub

Groet, Leo
______________________________

Groet, Leo

Offline Penny

  • Lid
  • *
  • Berichten: 41
  • I'm gonna live till I die.
Re: zoeken, weergeven, formulieren
« Reactie #2 Gepost op: 08 februari 2008, 21:13:13 »
Hartelijk bedankt Leo. Dit werkt al perfect  :) (zo voor de hand liggend en ik me maar rot zoeken in die help)

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: zoeken, weergeven, formulieren
« Reactie #3 Gepost op: 08 februari 2008, 22:43:41 »
Penny, En voor je tweede vraag heb ik alle code achter het formulier 'frm_ zoeken' herschreven. Plak dit ipv je eigen code en test ff met de 1e textbox (na invoer op enter drukken en kijk wat er gebeurt)
Dim KolomNr As Integer

Private Sub UserForm_Initialize()

     btn_Zoek.Enabled = False
       
End Sub

Private Sub AL01_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim ctrl As Control
Const DezeCtrl As String = "AL01"

    For Each ctrl In Me.Controls
        If TypeOf ctrl Is MSForms.TextBox And ctrl.Name <> DezeCtrl Then
            ctrl.Enabled = False
            ctrl.BackStyle = 0
        End If
    Next ctrl
   
    btn_Zoek.Enabled = True
   
End Sub

Private Sub btn_Clear_Click()
Dim ctrl As Control

    For Each ctrl In Me.Controls
        If TypeOf ctrl Is MSForms.TextBox Then
            ctrl.Text = ""
            ctrl.Enabled = True
            ctrl.BackStyle = 1
        End If
    Next ctrl
   
    btn_Zoek.Enabled = False
    Selection.AutoFilter Field:=KolomNr
   
End Sub

Private Sub btn_Zoek_Click()
Dim ctrl As Control
Dim c As Range
Dim ZoekKolom As String, FilterNaam As String

    For Each ctrl In Me.Controls
        If TypeOf ctrl Is MSForms.TextBox And ctrl.Enabled = True Then
            ZoekKolom = ctrl.Name
            FilterNaam = ctrl.Value
        End If
    Next ctrl

    On Error Resume Next
   
    With Sheets("Overzicht_").Rows(1)
        Set c = .Find(ZoekKolom)
        KolomNr = Sheets("Overzicht_").Range(c.Address).Column - 1
    End With
   
    Selection.AutoFilter Field:=KolomNr, Criteria1:=FilterNaam
   
    MsgBox KolomNr & "..." & ZoekKolom & "..." & FilterNaam
   
    On Error GoTo 0
   
End Sub

Als dit je dan bevalt, zal je voor iedere textbox op dat formulier deze sub moeten aanmakenPrivate Sub XXXX_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)Niet vergeten om dan de regel met de constante óók aan te passen!Const DezeCtrl As String = "XXXX" 'geef hier de juiste naam van de textbox

Groet, Leo
______________________________

Groet, Leo

Offline Penny

  • Lid
  • *
  • Berichten: 41
  • I'm gonna live till I die.
Re: zoeken, weergeven, formulieren
« Reactie #4 Gepost op: 09 februari 2008, 01:15:52 »
Merci voor de uitstekende hulp Leo,
het werkt pefect allemaal en ik heb weer een aantal nieuwe dingen bijgeleerd  8)

Ik je code wel een beetje aangepast:

Private Sub btn_Clear_Click()
    Dim ctrl As Control

    For Each ctrl In Me.Controls
        If TypeOf ctrl Is MSForms.TextBox Then
            ctrl.Text = ""
        End If
    Next ctrl
 
End Sub


Private Sub btn_Zoek_Click()

On Error Resume Next

Dim kolomnr As Integer
Dim ctrl As Control
Dim c As Range
Dim ZoekKolom As String, FilterNaam As String

    For Each ctrl In Me.Controls
        If TypeOf ctrl Is MSForms.TextBox Then
           
            ZoekKolom = ctrl.Name
            FilterNaam = ctrl.Value
                   
                   
            With Sheets("Overzicht_").Rows(1)
                Set c = .Find(ZoekKolom)
                kolomnr = Sheets("Overzicht_").Range(c.Address).Column - 1
            End With
   
           
            If FilterNaam <> "" Then
                Selection.AutoFilter field:=kolomnr, Criteria1:="*" & FilterNaam & "*"
                     
                On Error GoTo 0
            Else
                Selection.AutoFilter field:=kolomnr
            End If
       
        End If
    Next ctrl

End Sub


M.vr.gr.
Penny

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: zoeken, weergeven, formulieren
« Reactie #5 Gepost op: 09 februari 2008, 08:34:54 »
Penny, Aanpassen staat je vrij (logisch)! Maar de reden dat ik je zoekscherm zo gemaakt had, was omdat je dan letterlijk 1 filter krijgt.
Moet je namelijk 'ns kijken wat je nu met het filteren doet. Namelijk óók een 'for...each textbox'. WAAR wordt dan op gefilterd??? Het filteren zal ALTIJD worden opgezet op volgorde van je TextBoxen.
Voorbeeldje: als je een NAW-tabel zou willen filteren om te zoeken naar 'Meneer Oplos', dan kan het filter op 'Geslacht, Naam' een ander resultaat geven dan 'Naam, Geslacht'.

Groet, Leo
______________________________

Groet, Leo

 


www.combell.com