4

I am seeking for a way to change the VBE settings programmatically. More especially, the editor background / font colors that manually are controlled at the pop up window:

VBE > Tools > Options > Editor Format
Ken White
  • 123,280
  • 14
  • 225
  • 444

1 Answers1

1

I occasionally need this, to re-set up VBA editor when my Citrix profile is reset (which unfortunately has to happen every few months).

I found your question while looking for a way to do this.

I have since written an AutoHotkey v1.1 script to do just this (which runs when the editor becomes active), and hope to help myself and others in the future.

You could in theory use VBA to call this script via Shell.

Customise your own colours with SelectForeground(ColorOptionAuto), SelectBackground(ColorOptionAuto), SelectIndicator(ColorOptionCyan), replacing e.g. ColorOptionAuto with ColorOptionX.

Note if you want even more colours you can use this solution: How to install a theme color in vba

Comment out or remove lines you don't want.

SLEEP_DURATION := 0

ColorOptionAuto := 0
ColorOptionBlack := 1 ;      https://www.colorhexa.com/000000
ColorOptionNavyBlue := 2 ;   https://www.colorhexa.com/000080
ColorOptionDarkGreen := 3 ;  https://www.colorhexa.com/008000
ColorOptionTeal := 4 ;       https://www.colorhexa.com/008080
ColorOptionMaroon := 5 ;     https://www.colorhexa.com/800000
ColorOptionPurple := 6 ;     https://www.colorhexa.com/800080
ColorOptionOlive := 7 ;      https://www.colorhexa.com/808000
ColorOptionLightGray := 8 ;  https://www.colorhexa.com/c0c0c0
ColorOptionDarkGray := 9 ;   https://www.colorhexa.com/808080
ColorOptionBlue := 10 ;      https://www.colorhexa.com/0000ff
ColorOptionLimeGreen := 11 ; https://www.colorhexa.com/00ff00
ColorOptionCyan := 12 ;      https://www.colorhexa.com/00ffff
ColorOptionRed := 13 ;       https://www.colorhexa.com/ff0000
ColorOptionMagenta := 14 ;   https://www.colorhexa.com/ff00ff
ColorOptionYellow := 15 ;    https://www.colorhexa.com/ffff00
ColorOptionWhite := 16 ;     https://www.colorhexa.com/ffffff

CodeColorOptionNormal := 0
CodeColorOptionSelection := 1
CodeColorOptionSyntaxError := 2
CodeColorOptionExecutionPoint := 3
CodeColorOptionBreakpoint := 4
CodeColorOptionComment := 5
CodeColorOptionKeyword := 6
CodeColorOptionIdentifier := 7
CodeColorOptionBookmark := 8
CodeColorOptionCallReturn := 9

; Select Option
SelectOption(optionIndex) {
    ; Go to start, i.e. index 0
    Send {home}
    Sleep %SLEEP_DURATION%
    ; Press down X times, where X is index of option, starting from 0
    Loop %optionIndex% {
        Send {down}
        Sleep %SLEEP_DURATION%
    }
    ; Lock in selection
    Send {tab}
    Sleep %SLEEP_DURATION%
}

; Select Code Colors
SelectCodeColors(codeColorOptionIndex) {
    ; alt C
    Send !c
    Sleep %SLEEP_DURATION%
    SelectOption(codeColorOptionIndex)
}

; Select Foreground
SelectForeground(colorOptionIndex) {
    ; alt O
    Send !o
    Sleep %SLEEP_DURATION%
    SelectOption(colorOptionIndex)
}

; Select Background
SelectBackground(colorOptionIndex) {
    ; alt B
    Send !b
    Sleep %SLEEP_DURATION%
    SelectOption(colorOptionIndex)
}

; Select Indicator
SelectIndicator(colorOptionIndex) {
    ; alt D
    Send !d
    Sleep %SLEEP_DURATION%
    SelectOption(colorOptionIndex)
}

SetTitleMatchMode, 2

; Wait for Microsoft Visual Basic for Applications editor to open
WinWaitActive, Microsoft Visual Basic for Applications

; View Immediate Window
; ctrl G
Send ^g

; Add Edit Toolbar
; alt V, T, down, enter
Send !vt{down}{enter}

; Open Options
; alt T, O
Send !to
Sleep %SLEEP_DURATION%

; Wait for Options menu to open
WinWaitActive, Options

; STATEFUL, assumes:
; - Editor tab is now open
; - Auto Syntax Check is ticked
; Untick (Toggle) Auto Syntax Check
; alt R
Send !r
Sleep %SLEEP_DURATION%

; STATEFUL, assumes:
; - Editor tab is still open
; - Require Variable Declaration is not ticked
; Tick (Toggle) Require Variable Declaration
; alt K
Send !k
Sleep %SLEEP_DURATION%

; STATEFUL, assumes:
; - Editor tab was open
; Switch to Editor Format tab
; ctrl tab
Send ^{tab}
Sleep %SLEEP_DURATION%

; Focus Font
; alt F
Send !f
Sleep %SLEEP_DURATION%

; Select Consolas (Western)
; "Consolas (Western)", tab
Send Consolas (Western){tab}
Sleep %SLEEP_DURATION%

; Focus Size
; alt S
Send !s
Sleep %SLEEP_DURATION%

; Select 11
; "11", tab
Send 11{tab}
Sleep %SLEEP_DURATION%

; Select Normal Text
SelectCodeColors(CodeColorOptionNormal)
SelectForeground(ColorOptionYellow)
SelectBackground(ColorOptionBlack)

; Select Selection Text
SelectCodeColors(CodeColorOptionSelection)
SelectForeground(ColorOptionBlack)
SelectBackground(ColorOptionWhite)

; Select SyntaxError Text
SelectCodeColors(CodeColorOptionSyntaxError)
SelectForeground(ColorOptionWhite)
SelectBackground(ColorOptionRed)

; Select ExecutionPoint Text
SelectCodeColors(CodeColorOptionExecutionPoint)
SelectForeground(ColorOptionBlack)
SelectBackground(ColorOptionLimeGreen)
SelectIndicator(ColorOptionYellow)

; Select Breakpoint Text
SelectCodeColors(CodeColorOptionBreakpoint)
SelectForeground(ColorOptionWhite)
SelectBackground(ColorOptionDarkGreen)
SelectIndicator(ColorOptionMaroon)

; Select Comment Text
SelectCodeColors(CodeColorOptionComment)
SelectForeground(ColorOptionDarkGray)
SelectBackground(ColorOptionBlack)

; Select Keyword Text
SelectCodeColors(CodeColorOptionKeyword)
SelectForeground(ColorOptionCyan)
SelectBackground(ColorOptionBlack)

; Select Identifier Text
SelectCodeColors(CodeColorOptionIdentifier)
SelectForeground(ColorOptionWhite)
SelectBackground(ColorOptionBlack)

; Select Bookmark Text
SelectCodeColors(CodeColorOptionBookmark)
SelectForeground(ColorOptionAuto)
SelectBackground(ColorOptionAuto)
SelectIndicator(ColorOptionCyan)

; Select CallReturn Text
SelectCodeColors(CodeColorOptionCallReturn)
SelectForeground(ColorOptionAuto)
SelectBackground(ColorOptionAuto)
SelectIndicator(ColorOptionLimeGreen)

; Press OK
; enter
; Uncomment this if you wish
; Send {enter}
; Sleep %SLEEP_DURATION%

preview

Tigregalis
  • 607
  • 3
  • 11