Combobox genereert foutmelding bij ingeven letter die niet in de lijst voorkomt

  • Onderwerp starter Onderwerp starter ML71
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

ML71

Gebruiker
Lid geworden
10 mrt 2006
Berichten
70
Ik heb een formulier gemaakt waarin boven twee optionbuttons staan, invoeren en wijzigen. Initieel is invoeren aangevinkt en is er onder de optionbuttons een textbox weergegeven. Zodra de optionbutton voor wijzigen wordt aangevinkt, verdwijnt de textbox en verschijnt er een combobox, gevuld met items. Bij het wijzigen van de combobox worden diverse andere velden automatisch gevuld.

Probleem is nu dat er een foutmelding verschijnt (fout 91, objectvariable of blokvariabele With is niet ingesteld) zodra ik in de combobox begin te typen en een beginletter pak die niet in de lijst voorkomt. Pak ik een beginletter van één van de items die wel in de lijst voorkomt dan laat de combobox meteen de juiste informatie zien. Als ik klik op foutopsporing dan is de eerste regel van de code geselecteerd waarmee de eerste tekstbox met een waarde gevuld zou moeten worden.

Weet iemand hoe ik dit euvel kan verhelpen?

Code:
Private Sub Userform_Initialize()

'Variabelen declareren
 Dim LocR As Range, nRowLoc As Long, r As Long, ws1 As Worksheet
 
'Variablen instellen
 Set ws1 = ThisWorkbook.Sheets("Locaties")
 Set LocR = ws1.Cells
 nRowLoc = ws1.Cells(Rows.Count, 1).End(xlUp).Row

'Toevoegen items aan combobox
 For r = 5 To nRowLoc
  If LocR(r, 1).Value <> "" Then
   Me.cboLocNaam.AddItem LocR(r, 1).Value
  End If
 Next

End Sub
Private Sub optLocWijz_Click()

'Velden schonen
 Me.txtAdrLoc.Value = ""
 Me.txtPCLoc.Value = ""
 Me.txtPLoc.Value = ""
 Me.txtLndLoc.Value = ""
 Me.txtCPLoc.Value = ""
 Me.txtTelLoc.Value = ""
 Me.txtMailLoc.Value = ""
 
'Zichtbaar maken combobox
 Me.txtNaamLoc.Visible = False
 Me.cboLocNaam.Visible = True

End Sub
Private Sub optLocInv_Click()

'Velden resetten
 Me.cboLocNaam.Value = ""
 Me.txtAdrLoc.Value = ""
 Me.txtPCLoc.Value = ""
 Me.txtPLoc.Value = ""
 Me.txtLndLoc.Value = ""
 Me.txtCPLoc.Value = ""
 Me.txtTelLoc.Value = ""
 Me.txtMailLoc.Value = ""
 
'Zichtbaar maken textbox
 Me.txtNaamLoc.Visible = True
 Me.cboLocNaam.Visible = False

End Sub
Private Sub cboLocNaam_Change()

'Variabelen declareren
 Dim ws1 As Worksheet
 Dim oRng As Range

'Variabelen instellen
 Set ws1 = Worksheets("Locaties")
 Set oRng = ws1.Cells.Find(what:=cboLocNaam.Value, lookat:=xlWhole)

'Textboxen vullen
 Me.txtAdrLoc.Value = oRng.Offset(0, 1).Value
 Me.txtPCLoc.Value = oRng.Offset(0, 2).Value
 Me.txtPLoc.Value = oRng.Offset(0, 3).Value
 Me.txtLndLoc.Value = oRng.Offset(0, 4).Value
 Me.txtCPLoc.Value = oRng.Offset(0, 5).Value
 Me.txtTelLoc.Value = oRng.Offset(0, 6).Value
 Me.txtMailLoc.Value = oRng.Offset(0, 7).Value

End Sub
 
een voorbeeld bestandje ontdaan van gevoelige info is makkelijker te testen
maar probeer eens bij cboLocNaam_Change on error resume next na de declaratie
want bij Set oRng wil je iets zoeken wat niet in die range voorkomt en dus krijg je een fout als je iets anders typt zoals jezelf al aangeeft
met On Error Resume Next wordt zo n fout genegeerd
als je na de Set regels On Error GoTo 0 typt werkt vanaf die regel de foutmelding mocht die er zijn wel weer
Maar dan worden je txt boxen ook niet gevuld als je wat anders het getypt want er wordt niks gevonden

hier een handleiding
http://www.cpearson.com/excel/errorhandling.htm
 
Laatst bewerkt:
Bedankt voor deze tip pasan! Ik had hier dus niet aan gedacht inderdaad.... hij doet het nu zoals verwacht.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan