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

juist bereik selecteren met vba

Status
Niet open voor verdere reacties.

tkint

Gebruiker
Lid geworden
5 dec 2011
Berichten
754
Beste,

Ik maak voor mezelf een facturatietool maar ik loop tegen een probleem aan. Ik heb de mogelijkheid ingebouwd om een kopie te maken dmv een dubbele klik op een factuurnummer in het tabblad "details facturen". Dat gaat goed voor de laatste factuur maar voor een eerder gemaakte factuur neemt hij alles mee tot op de laatst gevulde rij. Ik zoek immers naar de laatst ingevulde rij in kolom A. We geeft mij een hint? Ik zie niet onmiddellijk een methode om de laatst ingevulde rij per factuur te vinden. Misschien moet ik mijn layout aanpassen?
 

Bijlagen

  • forumvraag_factuurvoorbeeld13.xlsm
    63,6 KB · Weergaven: 24
Geen idee?

Hoe kom je tot zoiets?
Code:
Function LastRow(sh As Worksheet)
On Error Resume Next
LastRow = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
End Function
 
normaal staan in je B-kolom toch de factuurdatum en niet de klantnaam ???
Code:
  volgende = 1
   [COLOR="#FF0000"]Set df = Sheets("details facturen") 'kortere versie van dat werkblad
   Sheets("factuur").Range("C19:F29").ClearContents 'leegmaken body factuur[/COLOR]
    For l = startlijnfactuur To startlijnfactuur + aantallijnen
    [COLOR="#FF0000"]  If df.Cells(kopieerlijn, 1).Value Like "####-#*" And IsDate(df.Cells(kopieerlijn, 2).Value) Then Exit For   'als eenvolgende lijn begint met een factuurnummer in de A-kolom en een datum in de B-kolom, dan is het einde verhaal
   [/COLOR]   Sheets("factuur").Cells(startlijnfactuur, 3).Value = Sheets("details facturen").Cells(kopieerlijn, 1).Value
 
Laatst bewerkt:
Weet niet wat je precies bedoelt maar zo pak je A2 tm de laatste regel

Code:
Sheets("details facturen").Range("A2", Cells(Rows.Count, 1).End(xlUp)).Copy

PS: gebruik inspringingen in je code om het leesbaar te houden.
 
Ik dacht iets af te weten van VBA maar blijkbaar is dan toch beperkt.
@VenA: wordt dit een UDF op het werkblad en retourneert dit een waarde of kan je de functie implementeren in de VBA-code?
@cow18: de regels in de rode kleur moet ik invoegen en de rest van de vba-code blijft?
@JVeer: hoe implementeer je deze regel want ik veronderstel dat er vba-code moet verwijderd worden? Ik moet inderdaad inspringingen maken om de code leesbaar te houden maar soms vergeet ik het indien de code functioneert na het uittesten.
 
Ik dacht te zien in je code dat je nu per regel de data overzet naar een ander tabblad.
Dat deel kun je vervangen door die ene regel.
 
die rode regels moet je inderdaad invoegen, oa. moet je ook het bereik in "factuur" leegmaken vooraleer je een nieuwe factuur aanmaakt. Bij weinig regels blijft er anders een stuk van de vorige factuur staan.
In jouw voorbeeld stond was in de kolom B bij een nieuwe klant de datum weggevallen en stond daar direct de klantnaam.

Ik veronderstel dat je aan het begin van je leercurve zit, want het is nogal omstandig geschreven.
Dit is iets korter geschreven
 

Bijlagen

  • forumvraag_factuurvoorbeeld13 (1).xlsm
    70,9 KB · Weergaven: 18
Laatst bewerkt:
Beste forumleden,

Bedankt voor jullie inbreng. Ik kan weer verder met mijn project. Ik zit inderdaad in het begin van de leercurve, alhoewel die al vrij lang is. Ik hen uit noodzaak macro's beginnen schrijven in Excel onder WIN 98 omdat niet alles lukte met formules. Ik heb geen kaas gegeten van vrij krachtige en korte instructies en ben altijd verbaasd hoe snel en efficiënt jullie een probleem oplossen. Hoedje af.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan