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

Automatisch berekenen formule

Status
Niet open voor verdere reacties.

stiefemb

Gebruiker
Lid geworden
29 apr 2010
Berichten
102
Allemaal,

Heb een excel bestand gemaakt om makkelijk men bestellingen te kunnen invoeren.
Zie in bijlage.
In heb ik om deze makkelijk in te geven een userform aangemaakt, die de betreffende cellen invuld.
Dit werkt mijns inziens goed.
Nu heb ik in het tabblad "ontdooifiche" een formule staan met sommen.als.
Wanneer ik nu in tabblad "bestellingen" de userform opendoe, en een bestelling ingeef, dan vult deze automatisch in op de volgende lege rij. Perfect dus.
Alleen telt de formule niet op in het tabblad "ontdooifiche".
Wanneer ik de waarde manueel verander in "bestellingen", telt ze wél op.
Hoe kan dit, iemand een idee??
Bekijk bijlage Bestellen.xlsm
 
Vanuit het form wordt de waarde weggeschreven als string. Je zult deze dus moeten converteren naar een integer m.b.v. CInt("string").
 
Dim lngrow As Long

"long" net vervangen door "string"
toch geen resultaat.
Zie ik hier iets over het hoofd?
 
Met "lngrow" wordt de rij bepaald waarin de waarde moet worden weggeschreven. Dit staat los van de waarde zelf.

Je moet de string die vanuit de textbox komt omzetten naar Integer. Dit is het eerste stukje van jouw code:
Code:
Private Sub CommandButton1_Click()

Dim lngrow As Long

Worksheets("bestellingen").Activate
lngrow = Worksheets("bestellingen").Range("A1048576").End(xlUp).Row + 1

Cells(lngrow, 1) = KlantNaam.Value
Cells(lngrow, 2) = Datum.Value
Cells(lngrow, 5) = GVT1Bulk
Cells(lngrow, 8) = GVT3Bulk
etc.

De waarden GCT1Bulk en GVT3Bulk moeten als volgt omgezet worden:
Code:
Cells(lngrow, 5) = CInt(GVT1Bulk)
Cells(lngrow, 8) = CInt(GVT3Bulk)
 
Ik snap 'm al. Op het moment dat je een veld leeg laat lukt het niet om hier een integer van te maken. Vandaar de foutmelding ...

Dit kun je voorkomen door de volgende IF-constructie:
Code:
If GVT1Bulk <> "" Then
    Cells(lngrow, 5) = CInt(GVT1Bulk)
End If

Dit is wel omslachtig. Mogelijk heeft één van mijn collega's een betere oplossing.

PS: Overigens gaat dit natuurlijk ook fout op het moment dat iemand iets invoert wat niet kan worden omgezet naar een integer, zoals bv. een spatie. Kortom. Beter is het om dit aan de voorkant (dus bij het invoeren) af te vangen.
 
Laatst bewerkt:
Code:
Cells(lngrow, 2) = CDate(Datum) 'anders wordt 12-11-2016 → 11-12-2016 Ned-USA
Cells(lngrow, 5) = Val(GVT1Bulk)
 
Code:
Private Sub CommandButton1_Click()
   with sheets("bestellingen").cells(rows.count,1).End(xlUp)
     .offset(1).resize(,4)= array(KlantNaam,cdate(Datum),GVT1Bulk,GVT3Bulk)
   end with
end sub

Vermijd in VBA:
- 'Select'
- 'Activate'
- merged cells
 
De code van HSV lijkt te werken. Bedankt hiervoor.
Test hem nog even verder uit.
Hoe komt het trouwens dat in tabblad "Bestellingen" de kolom weeknr niet verder wordt getrokken bij een nieuwe ingave?
 
Doordat:
Code:
Cells(lngrow, [COLOR=#ff0000]4[/COLOR]) = ...........
er niet tussen staat.
 
Bij mijn andere tabellen worden de formules bij een nieuwe regel toch verder getrokken?
hoe zou de code er dan kunnen uitzien?
 
Zet onderstaande coderegel er tussen.
Code:
Cells(lngrow, 4) = DatePart("ww", CDate(Datum), vbMonday,vbFirstFourDays)
 
Dan heb je waarschijnlijk een datum in de textbox gezet dat ligt tussen 4 en 10 januari 2016.
 
en die datum staat in je werkblad als "06-01-2016": ergo HSV's vermoeden klopt.
 
Laatst bewerkt:
Hoi Allemaal,

De datums blijven zich omdraaien.
9/6/2016 blijft uitdraaien naar 6/9/2016.
Kunnen jullie aub eens naar de code kijken en eventueel een aanpassing doen?
Bij het ingeven in de userform bij datum, zou in tabblad bestellingen , produktiedatum de juiste datum moeten komen.
Vervelend.
Bekijk bijlage Bestellen.xlsm
 
Zie dit in het bestand:
Code:
Cells(lngrow, 1) = KlantNaam.Value
Cells(lngrow, 2) = Datum.Value

En zie dit in #7 van 6 juni 2016, 22:11:
Code:
Cells(lngrow, 2) = CDate(Datum) 'anders wordt 12-11-2016 → 11-12-2016 Ned-USA
Cells(lngrow, 5) = Val(GVT1Bulk)
 
Ok, deze had ik over het hoofd gezien.
Inderdaad, datum staat juist nu.
Vriendelijk bedankt.
Voorlopig kan ik even verder.
 
Hallo allemaal,

Heb toch weer een klein probleemje.
Sorry hoor.
Bij het ingeven in de userform, bij Kibbeling, onder bulk, bv KIB TRADITIONEEL HEEKFILET MET VEL, wanneer ik in Textbox "Traditioneel" 1 ingeef, en onder "Gram" 1000, geeft dit in het werkblad "bestellingen allebei 1.
Terwijl dit 1 en 1000 zou moeten geven?
Iemand een idee?
Steven
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan