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

Macro een stapje terug zetten

Status
Niet open voor verdere reacties.

Paul-RT

Giga Honourable Senior Member †
Lid geworden
6 dec 2003
Berichten
10.886
Ergens in een excel document staat in een vba code de volgende text.
Code:
 Do
      fn = fn + 1
      .Range("O2") = "Nr " & Format(fn, "00"):
      If IsEmpty(.Range("C" & (fn + 17))) Then .Range("B" & (fn + 17)) = "FAC" & Range("Q1") & "-" & Format(fn, "00"): .Range("C" & r).Select:  .Range("O3") = "FAC" & Range("Q1") & "-" & Format(fn, "00"): Exit Do
    Loop
Nu heeft "FN" de waarde 6 waar dat op dit moment 5 zou moeten zijn.
Erg lastig, want bij elke handeling in mijn document wordt er (na voldoen voorwaarde) 1 bij opgeteld.
Ik wil de waarde (zonder de formule aan te passen) weer 1 naar beneden.

Kan dat? Dus, handmatig de waarde 1 malig aanpassen.
Zo ja, waar / hoe?
 
Code:
Do
   fn = fn + 1
   .Range("O2") = "Nr " & Format(fn, "00"):
   If IsEmpty(.Range("C" & (fn + 17))) Then 
      .Range("B" & (fn + 17)",O3") = "FAC" & Range("Q1") & "-" & Format(fn, "00"):
      Exit Do
  End If
Loop
- waar haalt fn de beginwaarde vandaan ?
- wat is de zin van .Range("C" & r).Select
 
Heb je met F8 al eens stap voor stap door de code gelopen? En gezien wat er effectief gebeurt en wat de waarden van de variabelen zijn?

Dat is wat mij betreft dan gewoon ergens 1 aftrekken.
 
En waarom schrijf je meermaals iets in cellen O2 en O3 TIJDENS de lus? Je overschrijft dus steeds die cel. Dit kan juist zijn als die cellen nog dienen voor de berekening van andere cellen, maar dan zou een voorbeeldbestandje veel beter zijn.
 
@ SNB: dit is maar een klein stukje van de code.
Beginwaarde is nul.
"wat is de zin van .Range("C" & r).Select "
Dat de curssor op een bepaalde cel terecht komt na uitvoeren van de hele macro.

@ Wigi:
Wordt de waarde van FN niet ergens opgeslagen?
In mijn document heeft FN die waarde in de loop van enkele maanden de waarde 6 gekregen.
Per abuis wel te verstaan. Iets mis gegaan met verbouwen van mijn document.
Kan ik de waarde niet ergens terugzetten naar 5 ?
 
O2 en O3 worden inderdaad herschreven totdat de juiste waarde is bereikt.
Aan het eind bevat O2 een waarde die ik kan gebruiken.
Dir alles gebeurd in een 1/4 seconde ofzo. Niet echt spannend.

Maar hoe zit dat, begint de waarde van FN telkens met nul als ik het document open?
Of wordt de waarde vastgehouden als ik em opsla, en verder geteld bij heropenen?


Hele macro code:

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

  If ThisWorkbook.Saved = True Then Exit Sub

  If (Sheets("KlantenRE-Crashrepair").Range("A3") = "") Or (Sheets("KlantenRE-Crashrepair").Range("A3") = "*") Then GoTo geenklant
    Application.DisplayAlerts = False
    ThisWorkbook.SaveAs Filename:=Sheets("KlantenRE-Crashrepair").Range("A3").Value
    
    
geenklant:
  ThisWorkbook.Saved = True
End Sub

Private Sub Workbook_Open()
  
  Dim r As Integer
  Dim fn As Integer
  r = 17
  fn = 0
  
  
  With ActiveWorkbook.Sheets("KlantenRE-Crashrepair")
    While IsEmpty(.Range("A3"))
      .Range("A3").Value = InputBox("Klantnummer invoeren aub.")
    Wend
                      
                      
  If (.Range("A3") = "*") Then Exit Sub
    
       
    Do
      r = r + 1
      If IsEmpty(.Range("C" & r)) Then .Range("A" & r) = Date: Exit Do
    Loop
 
 
    Do
      fn = fn + 1
      .Range("O2") = "Nr " & Format(fn, "00"):
      If IsEmpty(.Range("C" & (fn + 17))) Then .Range("B" & (fn + 17)) = "FAC" & Range("Q1") & "-" & Format(fn, "00"): .Range("C" & r).Select:  .Range("O3") = "FAC" & Range("Q1") & "-" & Format(fn, "00"): Exit Do
    Loop
    
    
  End With
End Sub
 
Laatst bewerkt:
Dat de curssor op een bepaalde cel terecht komt na uitvoeren van de hele macro.

Akkoord, maar dan zet je dat niet in een lus. Want dan doe je x aantal keer hetzelfde.

@ Wigi:
Wordt de waarde van FN niet ergens opgeslagen?
In mijn document heeft FN die waarde in de loop van enkele maanden de waarde 6 gekregen.
Per abuis wel te verstaan. Iets mis gegaan met verbouwen van mijn document.
Kan ik de waarde niet ergens terugzetten naar 5 ?

Dat is een variabele, dus die komt op 0 te staan als je de code start.
 
Ik denk dat ik em al weet.
De functie van FN heeft te maken met het genereren van een factuur-volgnummer.
In een bepaalde regel heb ik een offerte ingevoerd, en niet een factuur.
De betreffende regel is dus bezet, en FN wordt met 1 verhoogd.
Helaas, nu klopt het factuur-volgnummer niet meer.

Ik ga hier een controle aan proberen toe te voegen.
Zoiets, als een bepaalde cel gevuld is EN de eerste 3 letters van een andere cel beginnen met :"FAC" dan 1 optellen bij fn.
Geen "FAC' in die cel, dan niet optellen, maar wel een regel zakken :)

Ik ga er een nachtje over slapen ;)

Thanx beiden :thumb:
Topic solved.
 
Laatst bewerkt:
Dan zou ik in een cel van je bestand het aantal facturen berekenen met een AANTAL.ALS functie die zoekt op FAC.

Die waarde lees je uit in de code, doe +1, en je bent.

Die AANTAL.ALS vermijdt dus het schrijven van een lus waarin je soms zelf verstrikt raakt :eek:
 
@Wigi:
Kun je dat makkelijk aanpassen in het document in de bijlage (vorige post) ?
Ik snap wat je bedoeld, maar even niet hoe.....


P.s, als je het document opent, wordt gevraagd om het klantnummer.
Niet invoeren = loop!
Aan het document werken? voer een * in en druk enter.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan