• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Zoeken in listbox & textbox

Status
Niet open voor verdere reacties.

Speedsurfer

Gebruiker
Lid geworden
3 aug 2019
Berichten
60
Beste lezer
Ik heb een adressenbestand waarin ik graag zou willen zoeken in een listbox en een textbox.
Een en ander loopt naar behoren, echter op het moment dat ik een regel bevestig komen er andere uitkomsten dan gewenst.
In meegestuurde bijlage het voorbeeld.
Dit is een gestript bestand, alle overbodige ballast is er uit gehaald.
In het menu staat een knop: "Zoek klant"
Als ik met de muis op een regel ga staan en ik klik, komt op een juiste wijze de info in het rechterdeel.
Als ik echter bij "Opnieuw zoeken" iets invul, vermindert de lijst in overeenstemming met de ingevulde letters.
Tot nu toe alles correct.
Zou graag als ik dan een regel selecteer met de muis, de info zichtbaar willen hebben op de rechterzijde.
Er zit, lijkt mij een verschuiving in de regels.

Dit zelfde probleem doet zich ook voor bij de knop "Zoek verkoop"

Weet iemand hoe ik dit kan oplossen.?
 

Bijlagen

  • Gestript bestand 15-05-2020.xlsm
    643,2 KB · Weergaven: 51
Haal de gegevens uit je listbox en niet uit je sheet
Code:
[FONT=Verdana,Arial,Tahoma,Calibri,Geneva,sans-serif]Private Sub Listbox3_Click()
  TextBox14.Text = ListBox3.Column(3) 'Voornaam
  TextBox15.Text = ListBox3.Column(4) 'Achternaam
  ...etc
[/FONT]
 
Oke.
Dank
In het testbestand ingevoegd en getest.
Leek te werken, maar loopt vast op "Column(9)
Geeft melding:
Fout -2147024809 (80070057) tijdens uitvoering:
Kan de eigenschap Column niet verkrijgen. Ongeldig argument.

Die kolom wil ik niet zichtbaar hebben in het overzicht.
 
ColumnCount van Listbox3 staat op 5, even aanpassen.
 
Waarom laad je niet gewoon alle kolommen in en zet de columnwidths van die kolom op nul.
Columncount op alle kolommen.

Verwijder de rode regels hier.
Code:
Private Sub UserForm_Initialize()
Dim X, sds, say1 As Long
[COLOR="#FF0000"]say1 = WorksheetFunction.CountA(Worksheets("Klantenlijst").Range("B:I"))
sds = Sheets("Klantenlijst").[A600].End(xlUp).Row[/COLOR]
[COLOR=#ff0000]'ListBox3.List = Sheets("Klantenlijst").Range("B4:I" & sds).Value[/COLOR]
[COLOR=#ff0000]'ListBox3.ListIndex = 0[/COLOR]
sv = Sheets("Klantenlijst").Cells(1).CurrentRegion.Value
ListBox4.List = sv
ListBox3.List = ListBox4.List
ListBox3.ListIndex = 0
End Sub


Code:
Private Sub TextBox30_Change() 'Zoeken
 With ListBox3
     For i = 2 To UBound(sv)
      s0 = IIf(s0 = "", 1, s0)
      If InStr(LCase(Join(Application.Index(sv, i, 0))), LCase(TextBox30.Value)) Then s0 = s0 & "|" & i
    Next i
    If s0 = "" Then
        .Clear
      Else
        .List = Application.Index(sv, Application.Transpose(Split(s0, "|")), 0)
         If UBound(ListBox3.List, 2) = 0 Then ListBox3.Column = ListBox3.List
TextBox14.Value = ""
TextBox15.Value = ""
TextBox16.Value = ""
TextBox17.Value = ""
TextBox18.Value = ""
TextBox19.Value = ""
TextBox20.Value = ""
TextBox21.Value = ""
TextBox23.Value = ""
TextBox24.Value = ""
TextBox25.Value = ""
TextBox26.Value = ""
TextBox27.Value = ""
TextBox28.Value = ""
TextBox29.Value = ""
    End If
  End With
 End Sub

Ook bovenstaande code kan wel iets gemakkelijker geschreven worden.
Code:
Private Sub TextBox30_Change() 'Zoeken
 With ListBox3
     For i = 2 To UBound(sv)
      s0 = IIf(s0 = "", 1, s0)
      If InStr(LCase(Join(Application.Index(sv, i, 0))), LCase(TextBox30.Value)) Then s0 = s0 & "|" & i
    Next i
    If s0 = "" Then
        .Clear
      Else
        .List = Application.Index(sv, Application.Transpose(Split(s0, "|")), [transpose(row(1:9))])
         If UBound(ListBox3.List, 2) = 0 Then ListBox3.Column = ListBox3.List
         
        For i = 14 To 29
         If i <> 22 Then Me("textbox" & i) = ""
        Next i
    End If
  End With
 End Sub
 
Laatst bewerkt:
Ad 1956 dank.
Helaas geeft de zelfde fout.
Ga nu aan de slag met de optie van HSV
 
Laatst bewerkt:
HSV ook dank je.
Maar helaas geeft dat niet het gewenste resultaat.
Hij blijft met de zelfde fout komen van kolom nummer 9 die wil ik niet in het overzicht zichtbaar hebben (Klant ID)
Het is de kolom waar het email adres in zit kolom (10)
Tot en met het land gaat het goed oftewel tot en met kolom (8)
 
Private Sub Listbox3_Click()
Dim Bulunan_Satir_No As Long
Bulunan_Satir_No = ListBox3.ListIndex + 1
TextBox14.Text = ListBox3.Column(3) 'Voornaam
TextBox15.Text = ListBox3.Column(4) 'Achternaam
TextBox16.Text = ListBox3.Column(5) 'Adres
TextBox21.Text = ListBox3.Column(7) 'Woonplaats
TextBox18.Text = ListBox3.Column(8) 'Land

TextBox19.Text = ListBox3.Column(10) 'Vanaf hier gaat het fout.

TextBox25.Text = Sheets("Klantenlijst").Range("P" & Bulunan_Satir_No).Value '2016 15
TextBox26.Text = Sheets("Klantenlijst").Range("O" & Bulunan_Satir_No).Value '2017 14
TextBox27.Text = Sheets("Klantenlijst").Range("N" & Bulunan_Satir_No).Value '2018 13
TextBox28.Text = Sheets("Klantenlijst").Range("M" & Bulunan_Satir_No).Value '2019 12
TextBox29.Text = Sheets("Klantenlijst").Range("L" & Bulunan_Satir_No).Value '2020 11
TextBox24.Text = Sheets("Klantenlijst").Range("Q" & Bulunan_Satir_No).Value 'Aankoopbedrag
Dim mycontrol As Object
For Each mycontrol In Klantenlijst.Controls
If TypeName(mycontrol) = "TextBox" Then
If IsNumeric(mycontrol.Value) Then
mycontrol.Value = Format(mycontrol.Value, "€ #,##0.00")
End If
End If
Next mycontrol
TextBox17.Text = ListBox3.Column(6) 'Postcode
TextBox20.Text = ListBox3.Column(1) 'Klant-ID
TextBox23.Text = ListBox3.Column(2) 'Titel
End Sub
 
Even beter je best doen.

Kolom die je niet in je overzicht wilt zet je op nul (0).
De zoekcriteria van de textbox kan gewoon het bereik behouden van 1 t/m 9.

Geen probleem.
 
Hier maar even snel in je bestandje geplaatst.
De beide codes die ik heb gewijzigd staat 'aangepast door HSV" achter.
Columncount op -1 zodat alle kolommen beschikbaar zijn.
De zoekcriteria blijven de kolommen 1 t/m 9.


Volgens mij staat er nog wel wat onzin in de rest van de codes, maar dat laat ik eerst maar voor lief.
 

Bijlagen

  • Gestript bestand 15-05-2020.xlsb
    270,8 KB · Weergaven: 51
Beste Harry.
Ik dacht dat ik echt mijn best deed.
Wil uiteraard niet zo maar een vraag stellen.
Oplossing aangedragen krijgen, en er dus niets voor doen, wil proberen het te snappen.
Maar als ik dan zo een code aangedragen krijg, denk ik wow.
Er schuilt gigantisch veel achter.
Ben echt bezig geweest om de aangedragen oplossingen in mijn originele bestand in te voeren.
Blijdschap alom als het direct werkt in mijn testbestand.
Maar als ik de aangepaste code's invoeg in het originele bestand komt hij met foutmeldingen.
Snap er inderdaad weinig van.
Originele bestand bestaat uit 500 regels.
De foutmelding die ik krijg is:
If InStr(LCase(Join(Application.Index(sv, i, [transpose(row(1:9))]))), LCase(TextBox30.Value)) Then s0 = s0 & "|" & i
Heeft het wellicht te maken met het bereik.?
Ik hoop dat je me wilt/kunt helpen.
Grtz. Frans
 
Wat voor foutmelding?

Graag ook je coderegels tussen
Code:
codetags
plaatsen.
 
Codetags. ?? Hoe zien die eruit.?
De code waar hij op onderbreekt is
If InStr(LCase(Join(Application.Index(sv, i, [transpose(row(1:9))]))), LCase(TextBox30.Value)) Then s0 = s0 & "|" & i
 
Ja dat heb ik al gelezen waar de foutmelding komt, maar wat is het foutmeldingsbericht?
Code selecteren en op # drukken in je geavanceerde omgeving bij het plaatsen van een reactie.

of: code] [/code typen met aan het begin een [ en op het eind een ]
 
[TextBox18.Text = .Column(8) 'Land]
Als ik van deze regel een tekstregel maak met ","
blokt hij de volgende code regel
[TextBox19.Text = .Column(10) 'Email)]

Ik heb beide codeblokken 1 op 1 ingevoegd in het testbestand.
Dat werkt.
Echter in mijn origineel niet.
 
Columncount op -1 ?
 
Welke waarde heeft ubound(sv,2) ?
 
Ik zie 1 regel met:
[For i = 2 To UBound(sv)]
en 1 met
[If UBound(ListBox3.List, 2) = 0 Then ListBox3.Column = ListBox3.List]
Verder c=komt Übound" niet voor.
 
Het origineel kan je niet plaatsen?

Er is ook geen verschil tussen 2 of 500 regeltjes nl.
Zet ergens in je code:

Code:
Msgbox Ubound(sv,2)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan