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

Via vba een formule in een cel zetten

Status
Niet open voor verdere reacties.

erik1235

Gebruiker
Lid geworden
13 nov 2008
Berichten
29
In de volgende code zit één regel waar ik een formule toewijs aan een cel. De formule wordt effectief toegewezen, maar geeft als resultaat steeds de foutmelding #Naam.

Wat doe ik verkeerd? :eek:

Het workbook met de code voeg ik eveneens toe in bijlage.

Code:
Sub MaakWerkbladenPerMedewerker()


Dim myWB As Workbook
Dim myWS As Worksheet
Dim UitgStaat As Range
Dim aantalWS As Integer
Dim str1 As String
Dim str2 As String
Dim i As Integer

Set myWB = ActiveWorkbook
Set myWS = ActiveSheet
Set UitgStaat = myWS.Range("UitgavenLijst")

'doorloop de uitgavenlijst op de worksheet samenvatting
'en maak voor iedere medewerker een worksheet
'waarbij de naam van de worksheet gelijk is aan het nummer van de medewerker

    'bepaal het aantal aanwezige worksheets
    aantalWS = myWB.Sheets.Count
    
For i = 2 To UitgStaat.Rows.Count
    'voeg worksheet toe
    Set myWS = myWB.Sheets.Add(after:=Sheets(aantalWS))
    'geef de sheet een naam - het nummer van de medewerker
    myWS.Name = UitgStaat.Cells(i, 1).Value
    'voorzie een som en een lijst op het werkblad
        'de lijst
            'kolomkopje
            myWS.Cells(3, 1).Value = "IndividueleUitgaven"
            'benoem de range
                str1 = "IndUitg_" & UitgStaat.Cells(i, 1).Value
                str2 = "=" & UitgStaat.Cells(i, 1).Value & "!$A$3:$A$4"
            ActiveWorkbook.Names.Add Name:=str1, RefersTo:=str2
            'maak er een lijst van
                str2 = UitgStaat.Cells(i, 1).Value & "_IndUitg_lijst"
            ActiveSheet.ListObjects.Add(xlSrcRange, Range(str1), , xlYes).Name = str2
        'de som
        myWS.Cells(1, 1).Value = UitgStaat.Cells(i, 2).Value
        myWS.Cells(1, 2).Formula = "=som(" & str1 & ")"
    'verhoog aantalWS
    aantalWS = aantalWS + 1
Next i

Set myWS = Nothing
Set myWB = Nothing

End Sub

De code doet het volgende:
Op basis van de tabel op het eerste werkblad, wordt er voor iedere medewerker een worksheet gemaakt. Deze worksheet krijgt telkens als naam, de nummer van de medewerker (bvb 004).
Op elk werkblad voorzie ik een lijst waarin de medewerker zijn individuele bedragen kan invullen.
Ik wil in cell A2 op ieder werkblad de som zien verschijnen van de individuele bedragen van iedere medewerker.

Ik werk met een nederlandstalige Excel 2003.

Alvast bedankt!
 

Bijlagen

  • Formule via VBA.xls
    36,5 KB · Weergaven: 31
Laatst bewerkt:
erik1235,

De formule moet in VBA in het Engels, ik zie Som staan en moet dus Sum zijn.
Anders de formule even met de macrorecorder opnemen, Formula hoeft er niet bij.

Code:
 myWS.Cells(1, 2) = "=SUM(" & str1 & ")"
 
Laatst bewerkt:
Hier de aangepaste file.
 

Bijlagen

  • Formule via VBA(Hv).xls
    35,5 KB · Weergaven: 41
Hoornvan,

Je hebt helemaal gelijk!

Hier heb ik écht al twee dagen zitten op zoeken. Ik was volledig in de overtuiging dat het SOM moest zijn omdat =SUM(...) rechtstreeks ingeven in de cell een foutmelding gaf.

De tip om via MacroRecorder te proberen is inderdaad een goeie tip die ik wel eens wil vergeten.

Bedankt en werkfijne dag!
Erik
 
erik1235,

Bedankt en werkfijne dag!

Dat laatste doe ik al 6,5 jaar niet meer.
Dit is een beetje een hobby, ik help waar ik kan.

Zet de vraag als opgelost, dank je.

Werkse
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan