如何在 Microsoft VBA 编辑器中使用自定义颜色?

如何在 Microsoft VBA 编辑器中使用自定义颜色?

我正在使用 Excel 和 VBA 进行一些工作项目,因此我别无选择,只能使用 Microsoft Visual Basic 编辑器。我通常不会介意,但我不知道如何为编辑器设置自定义颜色(我只能从默认调色板中选择)。

要更改当前的颜色,我转到Tools -> Options -> Editor Format...但是,您的选择仅限于默认(和基本)16 种颜色 - 当我说基本时,我的意思是基本的,如粉色、蓝色、黑色、白色等……

有人知道如何指定自定义颜色,或者至少更改默认调色板中显示的一些颜色?

答案1

VBA 从这些注册表项中读取颜色设置:

HKEY_CURRENT_USER\Software\Microsoft\VBA\6.0\Common\CodeForeColors HKEY_CURRENT_USER\Software\Microsoft\VBA\6.0\Common\CodeBackColors

这些键中的每一个都包含“工具”->“选项”->“编辑器格式”中每个条目的值列表(以空格分隔)。例如,里面的第一个值代码背景颜色是背景颜色和里面的第一个值代码前色是普通文本的前景色。值是颜色的内部 ID,0 表示自动着色,11 表示青色,5 表示红色等。

尝试一下:关闭 Excel,将第一个值更改为代码背景颜色至 5 并重新启动 Excel。代码编辑器的背景现在将变为红色。

问题是 VBA 编辑器仅支持这些内部值,并且它能理解的最高数字是 16。任何其他值都不会被接受,并且默认恢复为 AUTO。

我尝试了输入不同值的几个选项(例如 128255128、16777215、#aaffee、255 或“170,255,238”),但都没有起作用。

因此我认为从技术上来说不可能分配其他颜色。

答案2

我根据此处找到的信息创建了一个应用程序:https://github.com/dimitropoulos/VBECustomColors

它基本上备份了 VBE6/VBE7 .dll 文件并允许使用自定义颜色,而无需使用十六进制编辑器。

党卫军

你可以在这里下载: https://github.com/gallaux/VBEThemeColorEditor

享受

编辑:源代码现在可用!

答案3

TeX HeX 非常准确。但是,您可以用自己的颜色替换 16 种内置颜色。只需进行一点十六进制编辑即可。以下是分步指南。(注意:这是针对 VB6 SP6,文件版本 6.0.97.82)。

  1. 备份 VB98 程序文件夹中的 VB6.EXE 文件。(可选,但建议这样做)。

  2. 启动您最喜欢的十六进制编辑器(呼喊 HxD)并打开 VB6.EXE。

  3. 跳转到地址 0xE22F4。这是颜色表的开头。

您应该看到四个零。这表示 RRGGBBAA 格式的黑色(不支持 alpha,因此它实际上只是 RRGGBB00 格式)。接下来的四个字节指定下一个颜色,依此类推,直到您到达 FFFFFF00(白色),结束于偏移量 0xE2333。

  1. 根据需要编辑这些四字节值中的任何一个。只需使用 RGB 格式的适当十六进制值,后跟零字节即可。例如,RGB(64, 128, 192) 将是 40 80 C0 00。

  2. 将更改保存到 EXE 并启动 VB6。您应该会在先前由内置 VB 颜色占据的插槽中看到新颜色。

答案4

我只是想发布之前答案的摘要,因为目前还不完全清楚需要做什么才能改变 Excel VBA 编辑器中的颜色

在下面的例子中,我添加了配色方案晒干我假设使用 Office 2010

步骤 0:在修改 VBE7.dll 之前请对其进行备份 - 您已收到警告!!!

步骤1:在十六进制编辑器中,打开位于 @ 的 VBE7.dll

"C:\Program Files\Common Files\microsoft shared\VBA\VBA7\VBE7.DLL" 适用于 64 位

或者

"C:\Program Files( x86)\Common Files\microsoft shared\VBA\VBA7\VBE7.DLL"适用于 32 位

第2步:找出第一发生

ff ff ff 00 c0 c0 c0 00 80 80 80 00 00 00 00 00
ff 00 00 00 80 00 00 00 ff ff 00 00 80 80 00 00
00 ff 00 00 00 80 00 00 00 ff ff 00 00 80 80 00
00 00 ff 00 00 00 80 00 ff 00 ff 00 80 00 80 00`

并替换为

00 2b 36 00 07 36 42 00 58 6e 75 00 65 7b 83 00
83 94 96 00 93 a1 a1 00 ee e8 d5 00 fd f6 e3 00
b5 89 00 00 cb 4b 16 00 dc 32 2f 00 d3 36 82 00
6c 71 c4 00 26 8b d2 00 2a a1 98 00 85 99 00 00

步骤3:找出第二出现这种情况(确保从文件顶部搜索)

00 00 00 00 00 00 80 00 00 80 00 00 00 80 80 00
80 00 00 00 80 00 80 00 80 80 00 00 c0 c0 c0 00
80 80 80 00 00 00 ff 00 00 ff 00 00 00 ff ff 00
ff 00 00 00 ff 00 ff 00 ff ff 00 00 ff ff ff 00

并替换为

00 2b 36 00 07 36 42 00 58 6e 75 00 65 7b 83 00
83 94 96 00 93 a1 a1 00 ee e8 d5 00 fd f6 e3 00
b5 89 00 00 cb 4b 16 00 dc 32 2f 00 d3 36 82 00
6c 71 c4 00 26 8b d2 00 2a a1 98 00 85 99 00 00

步骤4:保存 dll 文件,然后打开 Excel> VBA 编辑器> 工具> 选项> 编辑器格式并设置代码颜色。

更改两个字符串是必要的,因为它允许在关机时正确保存颜色,并允许颜色编辑器打开而不会导致 Excel 崩溃。

感谢所有之前的回答者花时间来解决这个问题!

相关内容