Userform gebruiken om bedragen op te tellen

Status
Niet open voor verdere reacties.
Na enig speurwerk en geprobeerd de codes te analyseren zie ik dat er helaas tocht iets niet goed komt. Daarom heb ik even een wat betere proefversie gemaakt met formules die verticaal zoeken. De kolommen A, C, D en E moeten feitelijk worden voorzien van een formule waar verticaal wordt gezocht. Daarom dacht ik of het mogelijk is dat het systeem een vba-code bij de kolom A, C, D en E kan plaatsen die deze kolommen voorziet van een code i.p.v. een vaste tekst.

Omdat het originele bestand meerder werkbladen bevat kan ik deze formules niet in het proefmodel zetten. Daarom vermeld ik hieronder de juiste formules die omgezet moeten worden naar vba-codes. Sorry voor het ongemak.

Regel 43
Kolom A: =ALS.FOUT(ALS(B43="";"";VERT.ZOEKEN(B43;KIEZEN({1\2};Data!$B$39:$B$279;Data!$A$39:$A$279);2;0));Data!A181+2)
Kolom C: =ALS(B63<>"";ALS.FOUT(VERT.ZOEKEN(B63;Data!$B$40:$C$216;2;0);"Andere kosten");"")
Kolom D: =ALS.FOUT(ALS(B63="";"";VERT.ZOEKEN(B63;KIEZEN({1\2};Data!$B$40:$B$125;Data!$D$40:$D$125);2;0));Btwhoogtarief)
Kolom E: =SOM.ALS(Mutaties!$F$13:$F$1503;B63;Mutaties!$M$13:$M$1503)

Ik kan me voorstellen dat het nu wel heel lastig wordt. Misschien wordt het veel makkelijker dat alleen kolom F (sub totaal) wordt gevuld vanuit de userform en dat het systeem helemaal niets doet met de kolommen A t/m E.
 

Bijlagen

  • Grootboekzoeker try-out (Philliep).xlsm
    103,3 KB · Weergaven: 41
Code:
Kolom A: "=IFERROR(IF(R[42]C[-1]="""","""",VLOOKUP(R[42]C[-1],CHOOSE({1,2},Data!R39C2:R279C2,Data!R39C1:R279C1),2,0)),Data!R[180]C[-2]+2)"
Kolom C: "=IF(R[62]C[-1]<>"""",IFERROR(VLOOKUP(R[62]C[-1],Data!R40C2:R216C3,2,0),""Andere kosten""),"""")"
Kolom D: "=IFERROR(IF(R[62]C[-1]="""","""",VLOOKUP(R[62]C[-1],CHOOSE({1,2},Data!R40C2:R125C2,Data!R40C4:R125C4),2,0)),Btwhoogtarief)"
Kolom E: "=SUMIF(Mutaties!R13C6:R1503C6,R[62]C[-1],Mutaties!R13C13:R1503C13)"
 
Bedankt voor het antwoord. Deze codes werken niet voor iedere regel. Om het misschien veel makkelijker te maken is het wellicht een idee om de kolom "Sub Totaal" te verplaatsen naar kolom A en dat het zoekscherm begint vanaf kolom B. Is dat mogelijk en hoe richt ik dat in?
 
ik ben nog even aan het experimenteren geweest en een kleine wijziging aangebracht en dat werkt tot dusver goed. Ik ga hier eerst nog even mee verder.
 
Kolom A genereert: =ALS.FOUT(ALS(XFD85="";"";VERT.ZOEKEN(XFD85;KIEZEN({1\2};Data!$B$39:$B$279;Data!$A$39:$A$279);2;0));Data!XFC223+2).

Hoe bereken ik dat het hier om A43 gaat i.p.v. XFD85?
 
In kolom E dient de formule: =SOM.ALS(Mutaties!$F$13:$F$1503;B43;Mutaties!$M$13:$M$1503), hoe kan ik deze formule wijzigen in een vba-code?
 
Probeer eens het volgende.
Ga in de correcte regel staan met de correcte formule en doe het volgende Ga naar Macro opnemen, in de formulebalk de formule knippen en terug plakken op het vinkje drukken en opname stoppen. Gebruik de opgenomen formule in je code en kijk of de code de juiste formule genereert.
 
Dat is een goed idee...Ik worstel nog steeds om de juiste formules (codes) in het programma te zetten... Bij onderstaande schuiven alle kolommen één naar rechts. Ik doe volgens mij iets niet goed.

Code:
Worksheets("Persoonlijke instelling").Cells(fnd.Row, 1).Resize(, 6).Value = Array("=IFERROR(IF(R[42]C[-1]="""","""",VLOOKUP(R[42]C[-1],CHOOSE({1,2},Data!R39C2:R279C2,Data!R39C1:R279C1),2,0)),Data!R[180]C[-2]+2)", T_00.Value, T_01.Value, _
"=IF(R[0]C[-1]<>"""",IFERROR(VLOOKUP(R[0]C[-1],Data!R40C2:R216C3,2,0),""Andere kosten""),"""")", T_02.Value, "=RC[1]", T_05.Value)
 
Voor kolom E kan je dezelfde methode gebruiken.
Opgepast dit gedeelte niet meenemen in je code.
Code:
ActiveCell.FormulaR1C1 =
 
Bij onderstaande schuiven alle kolommen één naar rechts. Ik doe volgens mij iets niet goed.
Je hebt een formule geplaatst voor kolom A dan moet je , T_00.Value uit je code verwijderen.
 
Tot zover gaat het helemaal goed, hier zit een enorm gelukkig mens. Super bedankt voor jouw hulp en tijd... Ik ga vandaag hier nog even verder mee en wellicht dat er nog iets van gebruikerswensen zijn, maar dat zijn details....Nog een fijne zondag. :)
 
Ik heb nog even een vraag. Ik wil de userform integreren in het bestaande programma. Dit heb ik gedaan door het werkblad even een andere naam te geven en vervolgens deze te verplaatsen naar het doelbestand. Vervolgens heb ik de modules:
Code:
Private Sub cmdToevoegen_Click()
  If IsNumeric(txtGetal) Then Sheets("Persoonlijke instelling").Cells(Rows.Count, 1).End(xlUp).Offset(6) = Replace(txtGetal.Value, ".", ",")
End Sub

Sub Txtv_Hoofdmenu_Klikken()
Grootboek_Form.Show
End Sub

Sub dotch()
 Rows("2:41").Insert Shift:=xlDown, _
      CopyOrigin:=xlFormatFromLeftOrAbove
End Sub

Ook verplaatst naar een bestaande module en heb ik de userform verplaatst. Tot slot heb ik het werkblad verwijderd. Nu krijg ik een foutmelding bij het opstarten: Object vereist. Wat heb ik niet goed gedaan?
 
De sub dotch heb je niet nodig, die had ik er snel ingezet om 41 rijen in te voegen.
Nu krijg ik een foutmelding bij het opstarten: Object vereist.
Bedoel je bij opstarten van de userform of bij opstarten van je bestand?
 
Ik heb in Formules Namen Beheren een gedefinieerd bereik gemaakt van uw blad kolom A42 tot F199 (de grootboek lijst) met de naam GB_lst, die wordt gebruikt in de userform code. Die heb je waarschijnlijk niet aangemaakt voor je echte blad.
 
Hij was wel mee gekopieerd maar het bereik was vervangen door Verw. Deze heb ik aangepast en nu opent de userform. Ik zal even kijken of alles nu goed gaat.
 
klopt helemaal, ik wist niet dat dit aangemaakt was. Maar nu begrijp ik ook meer van het programma en de selectie. Ik ben jou zo super erkentelijk en vooral de snelle hulp...Chapeau :thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan