Automatische uitvoering procedures met VBA
Exsion biedt de mogelijkheid eigen VBA procedures uit te voeren voor of na het gegevens vernieuwen. Verder is het andersom mogelijk de functie "Gegevens vernieuwen" uit te voeren vanuit de eigen procedure. Houdt er wel rekening mee dat fouten die optreden binnen de eigen procedure van invloed kunnen zijn op de werking van Exsion. Test bij eventuele problemen altijd eerst uit of de fout ook optreed met standaard gebruik van Exsion zonder eigen procedures.
Aanroep vanuit een eigen procedure
Vanuit een eigen VBA procedure kan de functie Gegevens vernieuwen worden aangeroepen. Op de plaats waar u in uw eigen procedure de gegevens wilt vernieuwen voegt u de volgende regel toe in de code via de VBA editor (F11):
Application.Run "'Exsion.xlam'!MENU_DATA"
De uitvoering van deze regel heeft exact hetzelfde effect als het drukken op de knop "Gegevens vernieuwen" in het menu van Exsion.
Om de uitvoering niet afhankelijk te maken van Exsion kunt u het beste om de uitvoering van Exsion functies “On Local Error” regels toevoegen.
On Local Error Resume Next Application.Run "'Exsion.xlam'!MENU_DATA" On Local Error GoTo 0
Naast gegevens vernieuwen kunt u ook de functie formules naar waarden automatisch uitvoeren. Neem hiervoor de volgende code op:
Application.Run "'Exsion.xlam'!MENU_VALUES"
Indien u de vraag krijgt of de formules omgezet moeten worden naar waarden kunt u deze onderdrukken door meldingen tijdelijk uit te schakelen. Dat doet u door een regel voor en na de formules naar waarden actie te plaatsen. Eventueel kunt u de huidige instelling opslaan in een variabele om deze vervolgens weer terug te plaatsen.
Dim s_displayAlertsSetting As Boolean s_displayAlertsSetting = Application.DisplayAlerts Application.DisplayAlerts = False On Local Error Resume Next Application.Run "'Exsion.xlam'!MENU_VALUES" On Local Error GoTo 0 Application.DisplayAlerts = s_displayAlertsSetting
Uitvoering procedure voor gegevens vernieuwen
Het is mogelijk een procedure uit te voeren net voor het gegevens vernieuwen. Neem hiervoor de volgende code op in het project. Voer in plaats van [Naam eigen procedure] de naam in van de procedure die u wilt uitvoeren. Deze procedure dient binnen hetzelfde project aanwezig te zijn.
Sub Exsion_beforerefresh() Call [Naam eigen procedure] End Sub
Om de gegevens te vernieuwen af te breken kan de volgende code worden gebruikt:
Sub Exsion_beforerefresh() If Cancel Then Err.Raise 513, "exsion_cancel" Exit Sub End If End Sub
Uitvoering procedure na gegevens vernieuwen
Naast het uitvoeren van een procedure net voor het gegevens vernieuwen is het ook mogelijk iets uit te voeren net na het gegevens vernieuwen. Neem hiervoor onderstaande code op in het project. Voer in plaats van [Naam eigen procedure] weer de naam in van de procedure die u wilt uitvoeren.
Sub Exsion_onrefresh() Call [Naam eigen procedure] End Sub
Automatisch verversen na wijzigen parameter
Benoem de cel die u wijzigt met een logische naam. In het voorbeeld hieronder is dit ‘Subcategorie’. Indien u een andere naam gebruikt past u deze dan ook in onderstaande code aan.
Plaats vervolgens de volgende code in ThisWorkbook.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target = ActiveSheet.Range("Subcategorie") Then Application.Run "'Exsion.xlam'!MENU_DATA" ActiveSheet.Calculate End If End Sub
©HB Software B.V.