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

Opgelost Offset Werk niet naar behoren

Dit topic is als opgelost gemarkeerd

Excelvbas01

Gebruiker
Lid geworden
7 apr 2020
Berichten
182
Beste leden,
Ik gebruik al een tijdje deze formule om gegevens in te laden in tekstboxen. Er is alleen een probleem. Er worden niet alle gegevens getoond. Het gaat mis op het moment dat klantnummer niet op volgorde is. Voorbeeld:
Klantnuumer:
1001
1001
1001
Dit gaat goed.

Op het moment dat er aan ander klantnummer tussen komt dan gaat het mis. Dan worden niet alle gegevens getoond.
Voorbeeld:
Klantnummer:
1001
1001
1005
1001
Dit gaat niet mis. Alleen de eerste twee nummers worden getoond. Ik heb dit opgelost door elke keer handmatig te sorteren.
Weet iemand een oplossing. Alvast bedankt.

Code:
Private Sub ZoekNo_Change()
If Len(ZoekNo) = 4 Then
For i = 1 To 3
Me("textbox" & i) = ""
Next
With Sheets("blad1")
Set Post = Range("a:a").Find(ZoekNo.Value)
If Not Post Is Nothing Then
    TextBox1 = Post.Offset(, 4).Value
    'End If
If Post.Offset(1).Value = Post.Value Then
    TextBox2 = Post.Offset(1, 4).Value
  End If
  If Post.Offset(2).Value = Post.Value Then
    TextBox3 = Post.Offset(2, 4).Value
    End If
If Post.Offset(3).Value = Post.Value Then
    TextBox4 = Post.Offset(3, 4).Value
    End If
If Post.Offset(4).Value = Post.Value Then
    TextBox5 = Post.Offset(4, 4).Value
    End If
 Else
 MsgBox " Ingevoerde postcode is niet aanwezig"
 ZoekNo = ""
 End If
  
End With
End If
End Sub
 

Bijlagen

.Offset is overbodig.
Kijk naast .Find ook eens naar .FindNext
 
Code:
Private Sub ZoekNo_Change()
   If Len(ZoekNo) = 4 Then
     sn = Blad1.Cells(1).CurrentRegion
     For j = 2 To UBound(sn)
       If sn(j, 1) = 1 * ZoekNo Then
         n = n + 1
         Me("Textbox" & n) = sn(j, 5) & vbTab & sn(j, 6)
         If n = 3 Then Exit For
       End If
     Next
  End If
End Sub
 
Code:
Private Sub t_zoek_Change()
    If Len(t_zoek.Value) < 4 Then Exit Sub
    For i = 1 To 3
        Me("TextBox" & i) = vbNullString
    Next
    With Sheets("Blad1").Columns(1)
        Data = Filter(.Parent.Evaluate("transpose(if(" & _
            .Address & "=" & 1 * t_zoek.Value & ",row(1:" & .Parent.Rows.Count & ")))"), False, 0)
        If UBound(Data) = -1 Then Exit Sub
        For i = 0 To UBound(Data)
            Me("TextBox" & i + 1) = .Parent.Cells(Data(i), 5): If i = 2 Then Exit For
        Next
    End With
End Sub
 
Laatst bewerkt:
Ik heb beide formules uitgeprobeerd. Maar wanneer ik deze wil samenvoegen met mijn formule. Zie boven dan gaat het fout. Ik heb ook dit geprobeerd. Het wil maar niet lukken. Ik zou het graag op deze manier willen oplossen. Maar het werkt niet.

Code:
Private Sub ZoekNo_Change()
Dim i As Long
For i = 1 To 3
Me("textbox" & i) = ""
Next
Set werkrange = Worksheets("Blad1").Columns(1)
Set Post = werkrange.Find(What:=ZoekNo.Text, LookIn:=xlValues, LookAt:=xlWhole _
        , SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True, SearchFormat:=True)
        
'Set Post = Range("a:a").Find(ZoekNo.Value)
If Not Post Is Nothing Then
    TextBox1 = Post.Offset(, 4).Value
    'End If
If Post.Offset(1).Value = Post.Value Then
    TextBox2 = Post.Offset(1, 4).Value
  End If
  If Post.Offset(2).Value = Post.Value Then
    TextBox3 = Post.Offset(2, 4).Value
    End If
If Post.Offset(3).Value = Post.Value Then
    TextBox4 = Post.Offset(3, 4).Value
    End If
If Post.Offset(4).Value = Post.Value Then
    TextBox5 = Post.Offset(4, 4).Value
    End If
 Else
 MsgBox " Ingevoerde postcode is niet aanwezig"
 ZoekNo = ""
 End If
  
'End With
End If
 
En wat is er mis met het document in #3?
Of die zonder VBA in #4?
Beide werken prima.
 
Ze werken beiden prima. Maar als ik deze wil combineren met mijn formule dan gaat het fout.
Ik ga nu toch formule in document in #3 aanpassen en gebruiken. Die komt in de buurt van wat ik wil.
Ik wil deze
Code:
If len(zoek)=4 then
vervangen. Ik wil namelijk op tekst kunnen zoeken zonder beperking. Ik ben zelf aan de slag gegaan om dit aan te passen maar het wil nog niet lukken. Excuus ik had dit eerder moeten aangeven.
 
De variabele zoek kan zowel tekst als numeriek zijn.
De Len functie geeft altijd een Long Integer terug.
 
Duidelijk.
Voorbeeld. In eerste kolom heb ik EERSTE staan. Als ik deze zoek dan gebeurt er niets. Ik krijg fout melding omdat textbox1 leeg is. Bij nummers is dat niet het geval. Het werkt dan gewoon.
Ik doe kennelijk iets niet goed wat weet ik niet.
 
Laat dan in het document zien wat je precies doet.
 
Document uit #3.
Wil dit ombouwen maar moet ik eerste die zoekvraag oplossen.
Kolom 1 staan nu nummers en tekst.
 

Bijlagen

@emields
Herlees Post#10. Ts wil op tekst kunnen zoeken zonder beperking in lengte maar in jouw nieuwe code is dit nog steeds van toepassing.
 
Ik wil jullie beiden bedankt. Formule van Warme bakkertje is prima. Die van emields is ook goed maar beperkt. Voor nu is het probleem opgelost.
 
Terug
Bovenaan Onderaan