[VBA] Zoeken niet hoofdlettergevoelig

Pagina: 1
Acties:
  • 464 views

  • Sand0rf
  • Registratie: Oktober 2005
  • Laatst online: 18:50
Hallo,

Ik ben bezig in een Excel-sheet waar ook een aantal Visual Basic scriptjes in staan, onder andere een zoekvenster. Het zoeken gaat prima en daar heb ik ook niks te klagen over. Maar helaas is het zoekvenster hoofdletter gevoelig en ik (of eigenlijk mijn baas) wil dat hij juist niet hoofdlettergevoelig is. Hieronder de code zoals hij nu is
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
Private Sub cmdAnnuleren_Click()
Unload Me
End Sub

Private Sub Frame1_Click()

End Sub

Private Sub UserForm_Initialize()
Call Keusenlijsten_instellen
End Sub
Private Sub cmdZoeken_Click()
Dim nummer As String, naam As String
Dim i As Integer, maxTabel As Integer
'Dim Vanaanvang, Totaanvang, Vanactiedatum, Totactiedatum As Date

    'einde vh bestand bepalen
Columns("A:A").EntireColumn.Hidden = False
Worksheets("Project Status").Select
Range("a1").Select
Set legecel = Sheets("Project Status").Cells.Find(What:="", After:=ActiveCell, _
        LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
        SearchDirection:=xlNext, MatchCase:=True)
maxTabel = legecel.Row

    'Als de velden leeg zijn worden ze niet meegenomen

    'Zoeken en gevonden Prokjecten in "Zoekresultaten" printen
i = 5: resultaten = 0
' voorkomen dat er lege velden worden geconverteerd naar data
If txtAanvangdatumvan <> "" Then Vanaanvang = DateValue(txtAanvangdatumvan)
If txtAanvangdatumtot <> "" Then Totaanvang = DateValue(txtAanvangdatumtot)
If txtActiedatumvan <> "" Then Vanactiedatum = DateValue(txtActiedatumvan)
If txtActiedatumtot <> "" Then Totactiedatum = DateValue(txtActiedatumtot)

'Voorzien van zoek functie naar deel van klantnaam door gebruik te maken van het volgende commando
'celinhoud Like ("*" & tekstuitform & "*") Then

Do While i < maxTabel
    Zoekactie = ""
    Zoekaanvang = ""
    If Cells(i, 6).Value <> "" Then Zoekaanvang = DateValue(Cells(i, 6))
    If Cells(i, 12).Value <> "" Then Zoekactie = DateValue(Cells(i, 12))

    If (txtNummer.Text = "" Or txtNummer.Text = Cells(i, 2).Value) And _
    (txtKlantnaam.Text = "" Or Cells(i, 3).Value Like ("*" & txtKlantnaam.Text & "*")) And _
    (txtProjnaam.Text = "" Or Cells(i, 4).Value Like ("*" & txtProjnaam.Text & "*")) And _
    (lstOmschrijving.Text = "" Or lstOmschrijving.Text = Cells(i, 5).Value) And _
    (txtAanvangdatumvan.Text = "" Or (Vanaanvang <= Zoekaanvang And Totaanvang >= Zoekaanvang) _
     Or txtAanvangdatumtot.Text = "") And _
    (lstProduct.Text = "" Or lstProduct = Cells(i, 7).Value) And _
    (lstLand.Text = "" Or lstLand.Text = Cells(i, 8).Value) And _
    (lstVerkoper.Text = "" Or lstVerkoper.Text = Cells(i, 9).Value) And _
    (lstStatus.Text = "" Or lstStatus = Cells(i, 10).Value) And _
    (txtActiedatumvan.Text = "" Or (Vanactiedatum <= Zoekactie And Totactiedatum >= Zoekactie) _
     Or txtActiedatumtot.Text = "") And _
    (lstOmvang.Text = "" Or lstOmvang.Text = Cells(i, 13).Value) And _
    (lstOfferte.Text = "" Or lstOfferte.Text = Cells(i, 14).Value) And _
    (lstRisico.Text = "" Or lstRisico.Text = Cells(i, 15).Value) And _
    (lstOrderkans.Text = "" Or lstOrderkans.Text = Cells(i, 16).Value) _
    Then
        ''Rows(i).Copy Destination:=Sheets("Zoekresultaten").Rows(resultaten + 2)
        resultaten = resultaten + 1
        Rows(i).EntireRow.Hidden = False
        'MsgBox (i & " goed")
    Else
        Rows(i).EntireRow.Hidden = True
    End If
    i = i + 1
    'If i = 20 Then GoTo 111 'stop routine voor testen
Loop
111 q = 2 'stop uitvoering macro
Columns("A:A").EntireColumn.Hidden = True
Range("b1").Select
Unload Me
If resultaten = 1 Then
    MsgBox ("Er is 1 Project gevonden")
ElseIf resultaten = 0 Then
    MsgBox ("Er zijn geen projecten gevonden! Controleer op evt. hoofdletters en typfouten")
    Call reset
Else
MsgBox ("Er zijn " & resultaten & " Projecten gevonden")
End If
''FrmZoekresultaat.Show
End Sub
Sub Keusenlijsten_instellen()
' lijst bij formulier zoeken = copie van lijst bij formulier Nieuw
' lijst bij formulier nieuw = lijst bij zoeken = lijst bij wijzigen
With lstOmschrijving
    <Veel Items>
End With

With lstProduct
    <Veel Items>
End With

With lstLand
    <Veel Landen>
End With
 
With lstVerkoper
    <4 verkopers>
End With

With lstStatus
   <Order Status>
End With

With lstOmvang
   <Veel geld>
End With

With lstOfferte
    .AddItem "Praatplaat"
    .AddItem "Globaal voorstel"
    .AddItem "Indicatie offerte"
    .AddItem "Budget offerte"
    .AddItem "Definitieve offerte"
End With

With lstRisico
    .AddItem "Laag"
    .AddItem "Gewoon"
    .AddItem "Hoog"
End With

With lstOrderkans
    .AddItem "Laag"
    .AddItem "Gewoon"
    .AddItem "Hoog"
End With


End Sub


Ik heb er al naar gekeken maar ik kon het niet vinden....
Ik weet niet of iemand van jullie weet hoe dit vrij makkelijk kan worden gedaan 8)

met vr. groet,

Sander

/post


  • remco_k
  • Registratie: April 2002
  • Laatst online: 23:10

remco_k

een cassettebandje was genoeg

What a hell of code
Als je het niet erg vind ga ik niet zitten zoeken naar het punt waar het om gaat.


Ik weet niet hoe de zoekactie uiteindelijk plaatsvind, maar gewoon de zoektekst en alle iterated teksten naar lower case converteren maakt de zoekactie niet hoofdletter gevoelig.

Maar misschien kan je even alleen de relevante code laten zien?

Alles kan stuk.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Mwah, als TS de relevante code opzoekt en dan gewoon leest lijkt me een topic tamelijk overbodig.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:13

Creepy

Tactical Espionage Splatterer

Mij ook. Als je meer had gelezen dan je eigen code alleen dan had je gezien dat VBA vragen in Officesuites en -software en niet in Programming.

Ik ga je topic echter niet verplaatsen. Hier op GoT gaan we er vanuit dat je in eerste instantie zelf opzoek gaat naar een oplossing en dat je ook aangeeft wat je dan al hebt geprobeerd en wat daar niet mee lukte. "Ik heb al gekeken maar kon niks vinden" kan iedereen zomaar roepen. Als je dat dan roept zorg dan ook dat het waar is want dan had je de MatchCase := true wel gevonden.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Dit topic is gesloten.