• 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.

Probleem met combo box bij intypen van een naam niet in de lijst

Status
Niet open voor verdere reacties.

Scallebe

Gebruiker
Lid geworden
29 okt 2014
Berichten
528
Goede morgen specialisten

Met jullie hulp heb ik een userform kunnen maken om een persoon te gaan zoeken in de diverse sheets.

Zie http://www.helpmij.nl/forum/showthread.php/884349-combobox-in-formulier?highlight=opzoeken

Het formulier werkt perfect, toch bijna

Ik kan een naam selecteren in de ComboBox, of de naam beginnen typen en selecteren, ik klik de "Go" button en de geselecteerde persoon wordt gevonden.


Echter wanneer ik een naam begin te typen en die naam staat niet in mijn Combobox krijg ik een error, dus van zodra de eerste spellingsfout in een naam wordt getypt.

error :

Run Time error '381'
Could not get the Column property. Invalid property array index

Dit zijn de codes die betrekking hebben met het userform :

Code:
Private Sub cboOpzoeken_Change()
    TextBox1.Text = cboOpzoeken.Column(1)
    TextBox2.Text = cboOpzoeken.Column(2)
    TextBox3.Text = cboOpzoeken.Column(3)
End Sub

Code:
Private Sub cmdOpzoeken_Click()
Application.ScreenUpdating = False
    Application.Visible = True
    If cboOpzoeken <> "" Then
        Application.GoTo Sheets(cboOpzoeken.Column(3)).Cells(cboOpzoeken.Column(4), 1)
        Range("A" & (ActiveCell.Row)).Select
        Selection.Offset(-1, 0).Select
        Unload Me
    End If
Application.ScreenUpdating = True
End Sub

Code:
Private Sub UserForm_Initialize()
Dim i As Long
Dim s As String
        s = "this is line "
        For i = 1 To 50
            Me.cboOpzoeken.AddItem s & i
        Next
    Dim frm As Long, frmstyle As Long
    If Val(Application.Version) >= 9 Then
        wHandle = FindWindow("ThunderDFrame", Me.Caption)
    Else
        wHandle = FindWindow("ThunderXFrame", Me.Caption)
    End If
    If wHandle = 0 Then Exit Sub
    frm = GetWindowLong(wHandle, GWL_STYLE)
    frm = frm Or &HC00000
    SetWindowLong wHandle, -16, frmstyle
    DrawMenuBar wHandle
    cboOpzoeken.List = Sheets("namenlijst").Cells(2, 1).CurrentRegion.Value
End Sub


Hoe kan dit opgelost worden?

Bedankt

Groetjes

Pascal
 
Hoi,
Zonder vbtje is het koffiedik kijken, zie eens of zoiets in de juiste richting gaat

Code:
Private Sub cboOpzoeken_Change()
On Error GoTo ErrMsg

    TextBox1.Text = cboOpzoeken.Column(1)
    TextBox2.Text = cboOpzoeken.Column(2)
    TextBox3.Text = cboOpzoeken.Column(3)
Exit sub
ErrMsg:
MsgBox ("Het gezochte is niet gevonden!."), , "Resultaat"
End Sub
 
gast0660,

Ik weet het maar het is een hele bedoening om een eenvoudig voorbeeld mee te sturen. Daarom ben ik al begonnen met de codes...

Ik zal het vanavond bekijken en indien nodig een voorbeeld prepareren.

Alvast bedankt

Groetjes
 
reduceer de initialize gebeurtenis tot:

Code:
Private Sub UserForm_Initialize()
    cboOpzoeken.List = Sheets("namenlijst").Cells(2, 1).CurrentRegion.Value
End Sub

en
Code:
Private Sub cboOpzoeken_Change()
   if cboOpzoeken.listindex>-1 then
    TextBox1.Text = cboOpzoeken.Column(1)
    TextBox2.Text = cboOpzoeken.Column(2)
    TextBox3.Text = cboOpzoeken.Column(3)
   end if
End Sub
 
Laatst bewerkt:
gast0660, snb,

De oplossing van gast0660 werkt, van zodra ik een "typfout" maak (= een naam beginnen intypen die niet in de lijst staat) krijg ik de MsgBox en kan ik opnieuw beginnen typen. :thumb:

Bij de oplossing van snb krijg ik de zelfde error melding :

Run Time error '381'
Could not get the Column property. Invalid property array index

en de volgende rode lijn wordt geel in de code voor de button :

Code:
Private Sub cmdOpzoeken_Click()
Application.ScreenUpdating = False
    Application.Visible = True
    If cboOpzoeken <> "" Then
[SQL][/SQL][COLOR="#FF0000"]     Application.GoTo Sheets(cboOpzoeken.Column(3)).Cells(cboOpzoeken.Column(4), 1)[/COLOR]
        Range("A" & (ActiveCell.Row)).Select
        Selection.Offset(-1, 0).Select
        Unload Me
    End If
Application.ScreenUpdating = True
End Sub

Bedankt voor de aangereikte oplossingen.


Groetjes

Pascal
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan