Citat:
Ursprungligen postat av martikainen
Perfekt lösning Chefen! Tusen tack
Får sitta ikväll och bygga om mitt program och se så den slår korrekt på alla formler.
Det som blir lite jobbigare är att sätta sig in i hur den nya typen av formel fungerar och hur kan jag editera den enkelt.
=IF(AA3="";"";AA3)
Blev
Range("D4").Formula = "=IF(RC[23]="""","""",RC[23])"
Medans
=IFNA(VLOOKUP(AO5;VirtualPlatforms!A:B;2;FALSE);"" )
Blev
"=IFNA(VLOOKUP(RC[36],VirtualPlatforms!C[-4]:C[-3],2,FALSE),"""")"
Inte helt med på vad de olika [] hänvisar till, får läsa på lite där. Det händer rätt ofta att jag lägger med en kolumn någonstans i sammanställning och måste därmed kunna byta i vilken kolumn de olika formlerna populeras i.
|
RC-propertyn kan vara ett elände och därför är det alltid lättare att lära sig skriva koden själv när det gäller just funktioner. Makroinspelningen skapar även otroligt mycket onödig kod som inte behövs. Just RC[23] är bara en relation till vilken cell som är markerad när du spelar in makrot. Alltså inte helt dugligt i alla lägen. Men inspelningsfunktionen tjänar ändå ett syfte om man snabbt vill ha koden för till exempel formatering av celler. Det är en plåga att skriva själv och man får mycket av grundstrukturen gratis. När jag kodade så använde jag just inspelningen som komplement vilket ju är enkelt då den skapar en egen modul med allt väl avgränsat. Sedan är det bara att plocka ut godbitarna.
Att lägga till rader och kolumner och sedan ha VBA-kod är inte en god idé om man använder sig av specifika cellreferenser. Det finns en anledning att många xlsm-filer är så låsta.

Räcker med att man infogar en liten cell så är koden förbrukad. Men det går ju att komma runt genom att inte använda sig av referenser till specifika celler utan man låter skriptet generera detta själv genom att räkna ut vilken cell som är aktuell och sedan använder denna i formeln.