Voor een opdracht moet ik in Excel een aantal spreadsheets vullen. Dit wil ik grotendeels automatiseren (handmatig 50+ spreadsheets veranderen met 10 werkbladen waar ongeveer 270 rijen in staan is me toch iets te veel
). Een hoop is me al gelukt via de macro recorder, maar er is één gigantisch ding waar ik op vast zit; het aanroepen van een macro via een =ALS formule in een cel.
De ALS formule: =ALS(I11="";"";RunMacro(FillCell))
De FillCell macro, samen met de functie:
Dit is de bedoeling (voorbeeld);
(Alle macro's staan in Personal.xslb, dit omdat ik anders per bestand de macro moet importeren)
In K3 staat een ALS formule die kijkt of cel I3 data bevat.
Als cel I3 gewijzigd wordt en data gaat bevatten, is het de bedoeling dat de rij van de cel een andere kleur krijgt d.m.v. een macro (ik heb gekeken naar conditionele formatting maar voor zover ik het snap moet dit per rij aangemaakt worden, en dat is niet mogelijk) en er een kruisje komt te staan in cel K3.
Als de data uit I3 wordt verwijderd moet de cel weer leeg worden.
Het verwijderen en het kruisje kijk ik later naar, dat is nu geen prioriteit.
Ik heb op internet gelezen dat je dit moet aanroepen via een functie, omdat alle macro's in een ander bestand staan. Dit heb ik geprobeerd met Application.Run "PERSONAL.XSLB!FillCell", in een functie die in hetzelfde bestand staat als FillCell (moet de functie in de werkboek zelf staan?), maar als ik cel I3 dan vul komt er in cel K3 #NAAM? te staan. Dit is het punt waar ik op vastloop, aangezien ik zelf vrij weinig kennis heb van programmeren, en al helemaal geen kennis van VBA.
Zou de functie in een andere plek moeten komen te staan, of klopt deze?
Is de functie uberhaupt correct?
De ALS formule: =ALS(I11="";"";RunMacro(FillCell))
De FillCell macro, samen met de functie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| Function RunMacro(FillCell) Application.Run "PERSONAL.XSLB!FillCell" End Function _________________________ Sub FillCell() ' ' FillCell Macro ' ' With ActiveCell Range(Cells(.Row, "A"), Cells(.Row, "K")).Interior.Color = RGB(0, 255, 125) End With End Sub |
Dit is de bedoeling (voorbeeld);
(Alle macro's staan in Personal.xslb, dit omdat ik anders per bestand de macro moet importeren)
In K3 staat een ALS formule die kijkt of cel I3 data bevat.
Als cel I3 gewijzigd wordt en data gaat bevatten, is het de bedoeling dat de rij van de cel een andere kleur krijgt d.m.v. een macro (ik heb gekeken naar conditionele formatting maar voor zover ik het snap moet dit per rij aangemaakt worden, en dat is niet mogelijk) en er een kruisje komt te staan in cel K3.
Als de data uit I3 wordt verwijderd moet de cel weer leeg worden.
Het verwijderen en het kruisje kijk ik later naar, dat is nu geen prioriteit.
Ik heb op internet gelezen dat je dit moet aanroepen via een functie, omdat alle macro's in een ander bestand staan. Dit heb ik geprobeerd met Application.Run "PERSONAL.XSLB!FillCell", in een functie die in hetzelfde bestand staat als FillCell (moet de functie in de werkboek zelf staan?), maar als ik cel I3 dan vul komt er in cel K3 #NAAM? te staan. Dit is het punt waar ik op vastloop, aangezien ik zelf vrij weinig kennis heb van programmeren, en al helemaal geen kennis van VBA.
Zou de functie in een andere plek moeten komen te staan, of klopt deze?
Is de functie uberhaupt correct?