VBA Dark Theme


Dit artikel is een verlengstuk van het artikel Changing VBA editor theme. In het laatst genoemde artikel wordt uitgelegd hoe de dark theme in de Visual Basic Editor handmatig toegepast kan worden. Ten behoeve van dit artikel zijn deze handmatige handelingen geautomatiseerd door de betreffende waarden rechtstreeks naar het register te laten wegschrijven.

De betreffende waarden voor het register zijn achterhaald met behulp van snapshots van het register. Zo is een snapshot voor en na de handmatige handelingen opgenomen. Op deze manier konden de wijzigingen in het register achterhaald worden. Voor dit proces is de software Registry Changes View gebruikt.

Gezien de onderstaande code wijzigingen aanbrengt in het register dient deze met zorg te worden uitgevoerd. Zorg altijd voor een backup van het systeem!

Zorg voorts voor een corresponderende versie nummer van VBA! Controleer dit via de Visual Basic Editor | Help | About Microsoft Visual Basic for Applications…

Option Explicit

'-----------------------------------------------------------------------------------------------------------------------
' Auteur        : pascalterheege.nl
' Datum         : 18-5-2020
' Doel          : dark theme VBE toepassen via het register
' Bronnen       : dark theme: https://vineetkumar.me/2019/09/changing-vba-editor-theme/
'                 registry  : https://www.nirsoft.net/utils/registry_changes_view.html
' Toelichting   : sleutels en waarden zijn achterhaald via RegistryChangesView v1.25 (snapshots)
' > Let op <    : wees voorzichtig met het aanbrengen van wijzigingen in het register! zorg altijd voor een backup!
'-----------------------------------------------------------------------------------------------------------------------

' ###################################################
' # Field              Foreground  Background       #
' # Normal Text        White       Black            #
' # Comment Text       Dark Grey   Black            #
' # Keyword Text       Light Green Black            #
' # Identifier Text    Sky Blue    Black            #
' # Bookmark Text      Dark Green  Black            #
' # Call Return Text   Blue        Black            #
' ###################################################

Dim objRegister As Object

Const Register As String = "HKEY_CURRENT_USER\SOFTWARE\Microsoft\VBA\7.1\Common\"

Sub wijzigThema()
    
    If MsgBox("Dark theme toepassen?", vbYesNo + vbQuestion) = vbYes Then
        opslaanSleutel Register & "CodeBackColors", "4 0 0 7 6 4 4 4 4 4 0 0 0 0 0 0 "
        opslaanSleutel Register & "CodeForeColors", "1 0 5 0 1 3 9 11 10 13 0 0 0 0 0 0 "
    Else
        verwijderSleutel Register & "CodeBackColors"
        verwijderSleutel Register & "CodeForeColors"
    End If
    
End Sub

Sub opslaanSleutel(Sleutel As String, Waarde As String)
    
    Set objRegister = CreateObject("WScript.Shell")
    
    objRegister.RegWrite Sleutel, Waarde

End Sub

Function verwijderSleutel(Sleutel As String) As Boolean
    
    On Error GoTo ErrorHandler
   
    Set objRegister = CreateObject("WScript.Shell")
   
    objRegister.RegDelete Sleutel
    
    verwijderSleutel = True
    
    Exit Function

ErrorHandler:

    verwijderSleutel = False

End Function