Opgelost Zoeken binnen een bepaald bereik

Dit topic is als opgelost gemarkeerd

Robert Smidt

Gebruiker
Lid geworden
26 mei 2009
Berichten
926
Beste Forumleden,

Graag zou ik jullie hulp willen inroepen t.b.v. een VBA-code in Excel.

Ik ben bezig met een boekhoudprogramma waar ik een lijst heb met o.a. grootboekrekeningen, die in kolom F staan. Het boeknummer dat behoort bij het betreffende grootboekrekening moet in kolom B worden vermeld. Onder [Opbrengstselectie] staan de grootboekrekeningen waar een boeknummer bij hoort.

Hiervoor heb ik een code geschreven die werkt wanneer [Opbrengstselectie] uit één grootboekrekening bestaat, echter wanneer ik binnen voornoemde bereik meerdere grootboekrekeningen heb staan, werkt de code niet meer. Het systeem geeft dan de foutmelding: Fout 13 tijdens invoering: Typen komen niet met elkaar overeen.

Code:
Sub BoeknummerGenereren()
Application.EnableEvents = False
Dim cell As Range
For Each cell In Range("b13:b" & Cells(Rows.Count, 1).End(xlUp).Row)
    ActiveSheet.Unprotect
    If cell.Value = "" Then
        If cell.Offset(, 4) = [Opbrengstselectie] Then
            cell.Offset(, 0) = [BoeknummerV]
        End If
    End If
Next
Application.EnableEvents = True
End Sub

Zelf zat ik te denken om "If cell.Offset(, 4) = [Opbrengstselectie] Then" te wijzigen in iets dergelijks als:
if IsError(Application.Match(Cells(Target.Row, 6), [Opbrengstselectie], 0)) then, echter geeft dat de foutmelding: Fout 424: Object vereist.

Helaas is het lastig om een voorbeeld mee te sturen vanwege privégevoelige informatie en hoop dan ook dat o.b.v. voorgaande voldoende gegevens zijn verstrekt om tot een oplossing te komen.

Alvast heel hartelijk dank.
Robert
 
Je zult op de eerste plaats de Activesheet.Unprotect buiten de lus moeten houden.

Code:
Dim C as Range, Cel as Range
   Activesheet.Unprotect ("Wachtwoord")
   Set C = Range("A7:A383")  'bereik aanpassen dus   
   For Each Cel In C.Cells
      If Trim(Cel.Text) <> "" Then bla bla bla 
   Next Cel
   Activesheet.Protect ("Wachtwoord")
 
Bedankt bram, maar het antwoord op mijn vraag zit in bla, bla, bla. Mijn code werkt op zich prima zolang [Opbrengstselectie] een verwijzing is naar één cel met een grootboekrekening, echter bestaat [Opbrengstselectie] uit een bereik bestaande uit meerdere cellen en daarom gaat het fout.
 
Na enig pionierswerk heb ik zelf de oplossing gevonden.
If cell.Offset(, 4) = [Opbrengstselectie] Then moet worden:
If Not IsError(Application.Match(cell.Offset(, 4), [Opbrengstselectie], 0)) Then

Maar toch heel fijn dat je met mij mee hebt gedacht. Super bedankt.
 
Terug
Bovenaan Onderaan