.find xlprevious vind niet vorige maar volgende

Status
Niet open voor verdere reacties.

eyeye

Gebruiker
Lid geworden
17 dec 2012
Berichten
42
Hallo,

Ik heb een sub geschreven om in een planningsoverzicht aan te geven wie wanneer vakantie heeft. Helaas gaat er bij het uitvoeren iets mis en ik kan niet vinden waar dat in zit. Wie kan me helpen?
Het gaat om het volgende:
Ik heb twee tabbladen 1 met een planning van meerder filialen en 1 met een lijst van opgegeven vakanties.
De Sub zou in het tabblad van de planning alle dagen moeten markeren die in de lijst voorkomen.
Ongeacht welke data ik invul op het tabblad met opgegeven vakanties, gaan de bovenste twee altijd goed, maar daarna gaat het mis.
Het is me opgevallen dat het misgaat bij lijn 25
Code:
        Set H = Sheets(1).Range("A:A").Find("Week *", after:=cell(G.Row - 1, 1), LookAt:=xlWhole, SearchDirection:=xlPrevious)
Bij de eerste twee keer dat de code hier langs komt vindt hij keurig een cel met "Week *" boven de start cel, maar vanaf de derde keer pakt hij de eerst volgende cel onder de start cel. Ik verwacht dus dat het daar in zit, maar krijg het niet voor elkaar om het op te lossen. In de bijlage een demo bestand met sub.

Ter info:
Ik heb gebruik gemaakt van de ".find" methode omdat de planning voor verschillende filialen niet altijd even veel weken bevat.
Daarnaast ben ik nog bezig met het uitsluiten van de mogelijkheden dat iemand niet in de planning staat op het moment dat hij wel vakantie heeft, dit levert momenteel een verkeerd resultaat op. (bv. Piet heeft vakantie in week 11 en 12, maar in week 12 staat hij niet op het rooster maar week 13 wel. Dan word er nu week 11 en 13 gemarkeerd.

Bedankt.
 

Bijlagen

  • Test planning.xlsm
    24,7 KB · Weergaven: 22
Wijzig de opbouw van de tabel zodat je autofilter kunt gebruiken:

kolom A vanaf rij 2 :dagen 01-03-2015..... 01-11-2015 (bijv)
kolom B ... AA namen van medewerkers

in de cellen van de medewerkerkolommen 'v' als vakantie
 
Bedankt voor het snelle antwoord. Helaas begrijp ik het niet helemaal. Daarbij is het niet mogelijk on de sheet met de planning qua opbouw te veranderen. Dit is een export product die ook zo moet blijven om weer geïmporteerd te kunnen worden.
 
Eyeye,

De fout zit in het gebruik van de functie Cell(), je mag er bij deze functie niet van uit gaan dat Cel(1,1) altijd
de cel A1 betreft. Beter is om gebruik te maken van de Range() functie.
Ik heb in je code alle Cell() functies verwijderd en die door de Range() functie vervangen.
Je code werkt nu wel goed.

Bekijk bijlage HelpMijTestPlanning.xlsm

Veel Succes.
 
Geweldig. Hartelijke dank voor deze oplossing! werkt perfect!
 
@Elsendoorn

Kun je een voorbeeld plaatsen waarin cel(1,1) niet overeenkomt met Range("A1") c.q het .address niet "$A$1" is ?

Het is niet verstandig variabelen een naam te geven die in VBA al vergeven is bijv. 'cell'

Code:
Sub M_snb()
  sn = Sheets("planning").Cells(1).Resize(100, 8)
  
  With CreateObject("scripting.dictionary")
    For j = 1 To UBound(sn)
       If sn(j, 1) <> "" Then
            If InStr(sn(j, 1), ":") Then
               c00 = sn(j, 1)
            ElseIf Left(LCase(sn(j, 1)), 4) = "week" Then
                sp = Application.Index(sn, j)
            Else
                For jj = 2 To 8
                  If InStr(LCase(sn(j, jj)), "(v)") Then .Item(sn(j, 1)) = IIf(.Item(sn(j, 1)) = "", c00 & "_" & sn(j, 1), .Item(sn(j, 1))) & "_" & sp(jj)
                Next
            End If
       End If
    Next
    
    Sheets("vakantie overzicht").Cells(20, 1).Resize(.Count) = Application.Transpose(.items)
    Sheets("vakantie overzicht").Cells(20, 1).Resize(.Count).TextToColumns , 1, , , 0, 0, 0, 0, -1, "_"
    
  End With
End Sub
 
Laatst bewerkt:
SNB,

Dit kan ik niet, mijn analyse van het probleem was dan ook fout. Maar heb toch de goede gevonden door jouw opmerking
over cell.
In de originele uitvoering van Eyeye wordt in plaats van Cells(x,y) de functie cell(x,y) gebruikt en omdat deze
variabele wel gebruikt wordt maar niet wordt gedefinieerd probeert VBA er toch wat van te maken.
Als je alle functies cell(x,y) wijzigt in Cells(x,y) werkt het programma dan ook goed.

Dank voor de denkopgave.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan