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

Formule in middels VBA in cel plaatsen

Status
Niet open voor verdere reacties.

allard1

Gebruiker
Lid geworden
5 dec 2006
Berichten
314
Vrienden,

Ik ben op dit moment bezig met het eigen maken van VBA (voor zover dit kan). Nu wil ik graag een sheet maken waarvan een aantal layout dingetjes middels VBA aangepast wordt. Nu heb ik een cel. In deze cel staat nu een formule om het aantal termijnen te berekenen. Soms is dit niet handig omdat er extra inhaaltermijnen van belang zijn. De gebruiker moet dus de mogelijkheid hebben deze zelf in te vullen. De VBA code om de cel weer variabel voor de gebruiker te maken heb ik al. Nu moet de cel alleen weer terug naar de oude staat (met de formule erin). Dit heb ik als volgt bedacht
Code:
ActiveSheet.Unprotect
With ActiveCell.Range("B14").Select
.Locked = False
.Value = "=AFRONDEN.NAAR.BENEDEN(ALS(B11="Maand";C14;ALS(B11="Kwartaal";C14/3+1;ALS(B11="Halfjaar";C14/6;ALS(B11="Jaar";C14/12+1))));0)"
.Cells.Interior.ColorIndex = 43
End With
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True_, AllowFormattingColumns:=False
Nu begint de code direct bij het opstellen al te haken. Dat is ook logisch aangezien er in de formule voor de cel ook ; e.d. staan. VBA wacht als gevolg hiervan op instructie eindes en dergelijke. Heeft iemand een idee hoe ik dit kan omzeilen ?

Groet,
Allard
 
Dit is het voor alles behalve de formule:

Code:
ActiveSheet.Unprotect
With ActiveCell.Range("B14")
.Locked = False
'.Formula = ... zie verder in mijn post
.Interior.ColorIndex = 43
End With
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True_, AllowFormattingColumns:=False

Voor de formule:

Zet de juiste formule manueel in een cel. Neem een macro op (Extra > Macro > Nieuwe macro opnemen...) waarbij je gewoon op die cel gaat staan, F2 drukt, en Entert. Stop de macro en zie wat eruit komt. Die kan je dan gewoon gebruiken in jouw formule.

Wigi
 
Dit is het voor alles behalve de formule:

Code:
ActiveSheet.Unprotect
With ActiveCell.Range("B14")
.Locked = False
'.Formula = ... zie verder in mijn post
.Interior.ColorIndex = 43
End With
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True_, AllowFormattingColumns:=False

Voor de formule:

Zet de juiste formule manueel in een cel. Neem een macro op (Extra > Macro > Nieuwe macro opnemen...) waarbij je gewoon op die cel gaat staan, F2 drukt, en Entert. Stop de macro en zie wat eruit komt. Die kan je dan gewoon gebruiken in jouw formule.

Wigi

Bedankt voor je reactie Wigi.....Weer dat select verhaal waar ik toch maar niet vanaf kom :) Ik ga hem direct uit testen
 
Net gezien:

Code:
With ActiveCell.Range("B14")

moet worden

Code:
With ActiveSheet.Range("B14")

ActiveSheet kan zelfs evt. nog weggelaten worden.

Wigi
 
Net gezien:

Code:
With ActiveCell.Range("B14")

moet worden

Code:
With ActiveSheet.Range("B14")

ActiveSheet kan zelfs evt. nog weggelaten worden.

Wigi

Hoi Wigi,

Ik heb de code aangepast en werkend gekregen. Ik moet trouwens zeggen dat de manier waarop de Formule is opgenomen in de macrorecorder wel heel bijzonder is geworden, daar was ik zelf natuurlijk nooit op gekomen. Voor wat betreft het weg laten van de Select functie, wil ik nog even het volgende toevoegen. Het ligt zeer waarschijnlijk aan mijn sheet, maar voor wat betreft de range heb ik hem laten staan. Anders plakt hij de formule op de meest vreemde plekken. Dit stuk zal ik nog even moet vervolmaken.

Enorm bedankt voor je hulp. Zo´n studieboek werkt toch erg op je creativiteit moet ik zeggen :D
Groet,
Allard
 
Als je dan toch selecteert, doe het hier

Code:
With ActiveSheet.Range("B14")
    .Select
    'rest van de code
End With

en niet

Code:
With ActiveSheet.Range("B14").Select
    'rest van de code
End With

Wigi
 
Als je dan toch selecteert, doe het hier

Code:
With ActiveSheet.Range("B14")
    .Select
    'rest van de code
End With

en niet

Code:
With ActiveSheet.Range("B14").Select
    'rest van de code
End With

Wigi

Wat is dan het verschil om het zo te doen ?
 
Alles achter

With

wordt doorgegeven aan de regels tussen With en End With, die "ingekort zijn" met een .

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan