Att tvinga en Makro för att köra när ett kalkylblad är Omräknat

June 24

När du skriver ett makro, är det avsett att köras när du väljer att köra den. Vad händer om du behöver för att utveckla ett makro som körs när något förändras i ditt kalkylblad? Vad händer om du vill att makrot ska köras automatiskt? Detta är särskilt nödvändigt om du skapar en anpassad funktion som du vill använda i cellerna i kalkylbladet.

Det är där den flyktiga metoden är praktiskt. Allt du behöver göra är att inkludera följande uttalande inom ditt makro:

Application.Volatile

Detta informerar Excel att resultaten av makrot är beroende på värdena i kalkylbladet, och att det bör verkställas när kalkylbladet räknas. Till exempel, tänka på följande användardefinierade funktionen:

Funktions CountCells (MyRange Som Range)
Dim iCount As Integer
iCount = 0
För varje cell i MyRange
Om cell.HasFormula Sedan
iCount = iCount + 1
End If
Nästa cell
CountCells = iCount
End Function

Denna funktion, om de används i en cell, räknar antalet celler som innehåller formler inom ett angivet intervall. Men funktionen kommer bara köra första gången det skrivs in i en cell, eller när den cell som innehåller formeln redigeras. Om du vill att funktionen för att räkna varje gång kalkylbladet räknas, skulle du lägga till flyktiga metoden nära början av funktionen:

Funktions CountCells (MyRange Som Range)
Dim iCount As Integer
Application.Volatile
iCount = 0
För varje cell i MyRange
Om cell.HasFormula Sedan
iCount = iCount + 1
End If
Nästa cell
CountCells = iCount
End Function

Införandet av Application.Volatile metoden innebär att varje gång kalkylbladet räknas, är denna funktion (macro) igen köra.

ExcelTips är din källa för kostnadseffektiv Microsoft Excel utbildning. Detta tips (2013) gäller för Microsoft Excel 97, 2000, 2002, och 2003. Du kan hitta en version av detta tips för menyfliksområdet i Excel (Excel 2007 och senare) här: Att tvinga ett makro för att köra när ett kalkylblad är Omräknat .