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

per maand optellen

Status
Niet open voor verdere reacties.

Bertus78

Gebruiker
Lid geworden
17 aug 2017
Berichten
209
Ik heb wederom een vraag.

Ik wil graag dat als ik wat invoer dat het per maand wordt opgeteld.
Nu heb ik wat in elkaar geknutseld, maar het werkt niet.

kan iemand mij vertellen waarom het niet werkt?

Code:
If Format(Date, "MMMM") = "januari" Then GoTo 1
If Format(Date, "MMMM") = "februari" Then GoTo 2
If Format(Date, "MMMM") = "maart" Then GoTo 3
If Format(Date, "MMMM") = "april" Then GoTo 4
If Format(Date, "MMMM") = "mei" Then GoTo 5
If Format(Date, "MMMM") = "juni" Then GoTo 6
If Format(Date, "MMMM") = "juli" Then GoTo 7
If Format(Date, "MMMM") = "augustus" Then GoTo 8
If Format(Date, "MMMM") = "september" Then GoTo 9
If Format(Date, "MMMM") = "oktober" Then GoTo 10
If Format(Date, "MMMM") = "november" Then GoTo 11
If Format(Date, "MMMM") = "december" Then GoTo 12


'------------------Maand tellen----------------------
1:
    With Sheets("tellen")
    nummer = Right(.Range("F15").Value, 4)
    If nummer = "" Then nummer = 0
    nummer = Val(nummer) + 1
    .Range("B3").Value = Format(nummer, "0000")
     End With
    GoTo verder2
2:
  
    With Sheets("tellen")
    nummer = Right(.Range("F15").Value, 4)
    If nummer = "" Then nummer = 0
    nummer = Val(nummer) + 1
    .Range("C3").Value = Format(nummer, "0000")
     End With
    GoTo verder2
3:
 
    With Sheets("tellen")
    nummer = Right(.Range("F15").Value, 4)
    If nummer = "" Then nummer = 0
    nummer = Val(nummer) + 1
    .Range("D3").Value = Format(nummer, "0000")
     End With
    GoTo verder2
4:
    With Sheets("tellen")
    nummer = Right(.Range("F15").Value, 4)
    If nummer = "" Then nummer = 0
    nummer = Val(nummer) + 1
    .Range("E3").Value = Format(nummer, "0000")
     End With
    GoTo verder2
5:
    
    With Sheets("tellen")
    nummer = Right(.Range("F15").Value, 4)
    If nummer = "" Then nummer = 0
    nummer = Val(nummer) + 1
    .Range("F3").Value = Format(nummer, "0000")
     End With
    GoTo verder2
6:
    
    With Sheets("tellen")
    nummer = Right(.Range("F15").Value, 4)
    If nummer = "" Then nummer = 0
    nummer = Val(nummer) + 1
    .Range("G3").Value = Format(nummer, "0000")
     End With
    GoTo verder2
7:
    
    With Sheets("tellen")
    nummer = Right(.Range("F15").Value, 4)
    If nummer = "" Then nummer = 0
    nummer = Val(nummer) + 1
    .Range("H3").Value = Format(nummer, "0000")
     End With
    GoTo verder2
8:
    
    With Sheets("tellen")
    nummer = Right(.Range("F15").Value, 4)
    If nummer = "" Then nummer = 0
    nummer = Val(nummer) + 1
    .Range("I3").Value = Format(nummer, "0000")
     End With
    GoTo verder2
9:
    
    With Sheets("tellen")
    nummer = Right(.Range("F15").Value, 4)
    If nummer = "" Then nummer = 0
    nummer = Val(nummer) + 1
    .Range("J3").Value = Format(nummer, "0000")
     End With
    GoTo verder2
10:
    
    With Sheets("tellen")
    nummer = Right(.Range("F15").Value, 4)
    If nummer = "" Then nummer = 0
    nummer = Val(nummer) + 1
    .Range("K3").Value = Format(nummer, "0000")
     End With
    GoTo verder2
11:
    
    With Sheets("tellen")
    nummer = Right(.Range("F15").Value, 4)
    If nummer = "" Then nummer = 0
    nummer = Val(nummer) + 1
    .Range("L3").Value = Format(nummer, "0000")
     End With
    GoTo verder2
12:
    
    With Sheets("tellen")
    nummer = Right(.Range("F15").Value, 4)
    If nummer = "" Then nummer = 0
    nummer = Val(nummer) + 1
    .Range("M3").Value = Format(nummer, "0000")
     End With
    GoTo verder2
'-----------------------------------------------

verder2:

Het ziet er misschien omslachtig uit, maar ik ben een beginner en ik probeer steeds dingen uit.
uit mijn ervaring wordt ik goed geholpen op de deze form.

Alvast bedankt....
 
Uit die ervaring zal ook vaak om een voorbeeldbestand worden gevraagd.

Dit stukje code doet hetzelfde of misschien zelfs beter.

Code:
dim nummer as long
with sheets("tellen")
  nummer = iif(.range("f15").value = "", 0, .range("f15") +1)
  with .range("a3").offset(,month(date))
    .value = nummer
    .numberformat = "0000"
  end with
 end with
 
Laatst bewerkt:
Top dat u even mee wil denken,
echter krijg ik nu een foutmelding.
"Dubbele declaratie in het huidige bereik.
Code:
Dim nummer As Long
 
Dan verwijder je die andere 'Dim nummer'.
 
HSV: de IIf functie doet niet aan "short-circuiting" wat technisch inhoudt dat alle argumenten altijd worden uitgevoerd, ongeacht de uitkomst van de test. Dit betekent dat in jouw voorbeeld altijd de waarde van de cel F15 wordt opgehaald, ook al is de uitkomst "Waar". En dus inefficienter dan een gewoon If, Then, Else statement.
 
Het lijkt mij niet dat het inefficiënt is JKP.
Uiteraard weet ik dat het beide argumenten berekend, maar lijkt me geen belemmering in snelheid.
Het klopt dat altijd de waarde van F15 wordt opgehaald.

Als F15 ="" dan 0 → B3 wordt '0000'
F15 = 2 dan F15+1 → B3 wordt '0003'.

Met celverwijzingen werkt dat prima, anders dan met andere objecten.
 
Laatst bewerkt:
Je haalt twee keer de waarde van F15 op (in het IIF statement) en dat gebeurt ook als F15 leeg is (t.g.v. de IIF functie).

Beter is:
Code:
dim nummer as long
Dim vValue as Variant
with sheets("tellen")
  vValue=.Range("F15").Value
  if len(vValue) = 0 Then
    nummer=0
  Else
    nummer=vValue +1
  end If
  with .range("a3").offset(,month(date))
    .value = nummer
    .numberformat = "0000"
  end with
end with
Het zal in dit macrootje niet uitmaken, maar als je dit in een loopje gaat doen wel.
 
Als jij vindt dat dat beter is doe jij het zo, prima toch?
Ik en velen met mij niet.
Het ligt eraan wat er in de argumenten staat.

Voor mij werkt de iif constructie prima in die context.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan