HSV, Eerste datum met tellerstand ook toevoegen

Status
Niet open voor verdere reacties.

1965Peter

Gebruiker
Lid geworden
20 jun 2016
Berichten
197
Hallo (Hsv),

Je hebt voor mij een mooie vba gemaakt waarbij ik de laatste datum met bijbehorende urenstand ingevuld krijg. (wordt veel gebruikt).
Nu zou ik graag ook de eerste datum met bijbehorende tellerstand willen hebben in kolom J & K.
Ik heb heel veel geprobeerd, maar krijg het niet voor elkaar.

Alvast bedankt weer.
 

Bijlagen

  • Invullen laatste datum met tellerstand.xlsm
    36,4 KB · Weergaven: 26
Code:
Sub hsv()
Dim cl As Range, c As Range
 For Each cl In Sheets("urenberekening").Cells(5, 3).CurrentRegion.Offset(1)
   Set c = Sheets("urenoverzicht").Columns(1).Find(cl, , , , , 2)
   If Not c Is Nothing Then cl.Offset(, 9).Resize(, 2) = c.Offset(, 2).Resize(, 2).Value
 Next cl
End Sub
 
Waarom zo'n rommelige opzet met lege rijen en dubbelde kolomkoppen?

Met een paar formules werkt het ook prima en heb je geen VBA nodig.
 

Bijlagen

  • Invullen laatste datum met tellerstand.xlsm
    37,3 KB · Weergaven: 21
VenA Lege rijen zijn wel gevuld voor een bepaald format. Helaas weet ik de formules niet. Probleem is ik moet de eerste & laatste datum hebben, MET daarbij de ingevoerde tellerstand. Ik kan me voorstellen dat je in een formule de laatste en eerste datum pakt, en de kleinste en hoogste tellerstand, alleen het probleem is dat het in werkelijkheid niet zo is. Die tellestand klopt niet altijd door allerlei redenen. De rapportage moet dus echt de werkelijke invoer laten zien.
Vandaar eerste en laatste datum met de daarbij ingevoerde tellerstand. De vba van Hsv deed precies wat ie moest doen vandaar.
 
Maak van de 9 eens een 7.
Code:
cl2.Offset(, [COLOR=#ff0000]9[/COLOR]).Resize(, 2)
 
HSV, Daar was ik wel al achter, maar als ik 'm 2x gebruik, één voor de eerste datum, twee voor de laatste datum, dan doet de ander het weer niet.
Ik dacht misschien kon de code zo worden aangepast, dat in 1 code de 4 kolommen gevuld zouden worden.
 
Dat kan ook Peter.
Code:
Sub hsv()
Dim cl As Range, c As Range, i As Long
 For Each cl In Sheets("urenberekening").Cells(5, 3).CurrentRegion.Offset(1)
 For i = 1 To 2
   Set c = Sheets("urenoverzicht").Columns(1).Find(cl, , , , , i)
   If Not c Is Nothing Then cl.Offset(, IIf(i = 1, 7, 9)).Resize(, 2) = c.Offset(, 2).Resize(, 2).Value
   Next i
 Next cl
End Sub
 
Zo kan het ook nog in je voorbeeldbestand

Code is langer, maar sneller, een keer wegschrijven i.p.v. meerdere keren.
Code:
Sub hsv()
Dim sv, sq, c As Range, i As Long
With Sheets("urenberekening").Cells(5, 3).CurrentRegion.Offset(1)
sv = .Resize(, 11)
 For i = 1 To UBound(sv) - 1
  Set c = Sheets("urenoverzicht").Columns(1).Find(sv(i, 1))
    If Not c Is Nothing Then
      sq = c.CurrentRegion.Offset(1).Resize(, 4)
        sv(i, 8) = Format(sq(1, 3), "mm/dd/yyyy")
        sv(i, 9) = sq(1, 4)
        sv(i, 10) = Format(sq(UBound(sq) - 1, 3), "mm/dd/yyyy")
        sv(i, 11) = sq(UBound(sq) - 1, 4)
    End If
  Next i
 .Resize(, 11) = sv
End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan