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
