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

Automatisering van facturatie en werkbonnen

Status
Niet open voor verdere reacties.
Inmiddels werkt het geheel vrij aardig. Ik kan nu tot 1999 producten factureren en in de factuur worden daarvoor automatisch de benodigde bladen aangemaakt. Ook wordt de data netjes in de daarvoor beschikbare rijen gezet.
Ik heb echter nog wat hulp nodig bij een ogenschijnlijk simpel iets.

Aan het eind van elke sheet wil ik bepalen wat het totaal op die sheet is (transport naar de volgende sheet van de factuur). Dit doe ik met de volgende code:
Code:
Range("F148").Value = "=SOM(" & "F" & factuur_rij - 28 & ":" & "F" & factuur_rij & ")"
De range 148 wordt ook een variabele maar dit is voor het testen eerst even wat handiger.

Nu komt in mijn excel sheet in cel F148 de volgende formule te staan: =SOM(F119:F147). Dat klopt prima ware het niet dat er in de sheet #NAAM? komt te staan. Als ik in de cel ernaast letterlijk dezelfde formule typ dan komt daar keurig het bedrag te staan. Wat doe ik fout?
 
Ik ben inmiddels met het werkbon gedeelte bezig van mijn "project" en daarbij loop ik tegen een uitdaging aan.

In mijn sheet waar ik alle gegevens invul maak ik gebruik van het volgende macro:
Code:
If Not Intersect(Target, Range("B21:B1999")) Is Nothing And Target.Count = 1 Then 'Selecteer cellen B21 tm B1999 en kijkt of deze wijzigt
        volgnummer = volgnummer + 1
        Application.EnableEvents = False    'Zet aanroepen van functies uit
        With Target                         'Target is de cel die is gewijzigd
            .Offset(, 1).Resize(1, 7).AutoFill .Offset(, 1).Resize(2, 7)    'Offset (,1) schuift een kolom op, een kolom naar rechts
                                                                        'Rezise (1,4) Selecteert de 4 volgende kolommen dus C,D,E,F
                                                                        'Autofill neemt de formules mee
                                                                        'Kopieert naar de volgende regel
            .Offset(1).ClearContents                                        'Verwijderd de ingevulde getallen
        End With
        Application.EnableEvents = True
        Rows(volgnummer + 5).Insert Shift:=xlDown                          'Nieuwe rij invoegen
        Range("F" & volgnummer + 7).Value = "=SUM(F21:" & "F" & (volgnummer + 4) & ")"  'Formule totaal ex btw bijwerken zodat het bereik van de formuler steeds met 1 cel toeneemt
        Range("F" & volgnummer + 8).Value = "=SUM(H21:" & "H" & (volgnummer + 4) & ")"
        Range("F" & volgnummer + 9).Value = "=SUM(I21:" & "I" & (volgnummer + 4) & ")"
    End If
End Sub

Dat werkt voor het aanmaken van de facturen prima. Ik wil mijn werkbonnen op de zelfde sheet aan kunnen maken. Daarvoor wil ik dat het "verander gebied" anders is als voor de factuur. De volgende regel zou dat moeten wijzigen:
Code:
If Not Intersect(Target, Range(""B21:B1999"")) Is Nothing And Target.Count = 1 Then

De range zou dan bijvoorbeeld van B31 tot B1999 moeten lopen. Het lukt me wel om te bepalen of ik een factuur of een werkbon aan het maken ben. Het lukt me echter niet om de range dynamisch/variabel te maken. Ik heb het al geprobeerd met:
Code:
If Not Intersect(Target, Range(soort_bon)) Is Nothing And Target.Count = 1 Then

Waarbij ik elders in de code dan het volgende doe:
Code:
soort_bon = "B31:B1999"

Dit geeft me een foutmelding: 1004 methode range van object_worksheet mislukt.

Edit:
Het lijkt nu te werken, ik had de variabele "soort_bon" in twee verschillende macro's as public gedeclareerd. Blijkbaar geeft dit problemen.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan