假设我们在 Excel 2007 的 Visual Basic 编辑器中。我们创建一个模块,名为modGlass:
Sub VolatileGlass()
Dim Glass As shiny_surface
End Sub
Run Code Online (Sandbox Code Playgroud)
然后我们创建第二个模块,名为modMetal:
Sub durableMetal()
Dim metal As metal_compound
End Sub
Run Code Online (Sandbox Code Playgroud)

两个模块中的子程序都包含错误:"User-defined type not defined."
当我使用“调试:编译 VBAProject”菜单项编译项目时,modGlass模块始终首先编译。如果我:
modMetal模块并编译(它?)或modMetal为amodMetal(以便金属模块现在位于项目的模块树层次结构中的第一个)尽管如此,modGlass模块还是首先被编译。
问题:如果我在 VBE 中有一个包含多个模块的项目,有没有办法指定模块的编译顺序?
我真的不需要这个功能,但我只是好奇是否有一些快速的方法来做到这一点。我使用的是 Excel 2007。
我正在阅读有关修改Windows注册表的命令的Windows命令行文档(Win + F1),特别是"reg add"命令.
reg add HKCU\testfolder /t REG_EXPAND_SZ /v Stokrotka /d "%systemroot%\system32"
Run Code Online (Sandbox Code Playgroud)
现在,我不知道这是如何设计的.当我调用上面的命令时,变量%systemroot%会扩展为C:\Windows.我试过以下不要让变量扩展,但是我无法强迫它不要:
# (setlocal enabledelayedexpansion) && (reg add HKCU\testfolder /t REG_EXPAND_SZ /v Stokrotka /d "!systemroot!\system32") && (setlocal disabledelayedexpansion)
变量'data'(/ d)字段^%systemroot^%或者类似!systemroot!或者只是扩展到C:\ windows.我可以使用.reg文件来完成我的任务,但我根本不想这样做.
我认为可能用于显示变量contents(regedit / regedt32 / reg query (commandline))的程序有问题,但在检查之后可能不是这种情况.
有任何想法吗?我主要感兴趣的是变量值在regedit窗口中应该是什么样子,如果它是:"%systemroot%\system32"或者"C:\windows\system32"被其他程序正确扩展.问候.
我有以下代码,我不知道为什么Excel没有Enum在Test2()子例程中看到类型(我已声明):
Private Sub Test1()
Dim test_name As Variant
End Sub
Private Enum rlcRollercoasterState
rlcRollercoasterDisabled
rlcRollercoasterEnabled
rlcRollercoasterBroken
rlcRollercoasterMissing
End Enum
Private Sub Test2()
Dim var1 As Variant
Dim rlcRC1State As rlcRollercoasterState ' User-defined type not defined
End Sub
Run Code Online (Sandbox Code Playgroud)
如果我Test1()在Enum类型声明后复制子例程,Excel会识别其中的rlcRollercoasterState类型Test1().如果我注释掉Test1()子例程,Excel会识别rlcRollercoasterState输入Test2().
为什么Excel无法rlcRollercoasterState在Test2()子例程中看到类型?
我有以下课程:
class washm_t
{
public:
enum door_t { closed = 0, open = 1 };
private:
door_t door_state ;
public:
int open() ;
};
Run Code Online (Sandbox Code Playgroud)
该类的问题是该open名称被定义为类内部方法的名称和枚举类型的值.
问题是:我可以以某种方式修改代码,以便两个open名称在类内部工作,或者我应该为open()方法或open枚举类型值选择一些其他名称?
这是open()函数的样子:
int washm_t::open()
{
if(door_state == open) // ~fails, 'open' interpreted as name of method
// not as name of enum type value
return 1 ;
else
return door_state = open, 0 ;
}
Run Code Online (Sandbox Code Playgroud) 我希望VBA编辑器使用自动完成功能来显示Worksheet对象的属性.

在SuperUser上的这个问题中,我了解到Worksheetsobject Item()属性返回Variant类型.该类型不是Worksheet对象的强类型.
但是,即使我使用ActiveSheet对象或以下代码,IDE仍然不显示Worksheet对象的属性.

我的问题是,如何使Excel中的VBA编辑器通过自动完成功能显示Worksheet对象的属性?
在Windows-125*代码页中(实际上,在相应ISO*的代码页中),某些字符代码没有定义相应的字符.留下一些没有角色的字符代码背后的前提是什么?

我对这个问题的理解是:如果基于7位的代码页不够,并且必须发明多个8位代码页,那么那些8位代码页(从之前的经验中学习)应该具有尽可能多的字符.它是可能的,而实际上一些字符代码缺乏一个字符.
excel ×3
excel-2007 ×3
vba ×3
excel-vba ×2
windows ×2
autocomplete ×1
batch-file ×1
c++ ×1
class ×1
codepages ×1
command-line ×1
declaration ×1
enums ×1
module ×1
redefinition ×1
unicode ×1
windows-1252 ×1