小编col*_*mik的帖子

Excel、Compile VBAProject - 更改模块的编译顺序

假设我们在 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模块并编译(它?)或
  • 重命名modMetalamodMetal(以便金属模块现在位于项目的模块树层次结构中的第一个)

尽管如此,modGlass模块还是首先被编译。

问题:如果我在 VBE 中有一个包含多个模块的项目,有没有办法指定模块的编译顺序?

我真的不需要这个功能,但我只是好奇是否有一些快速的方法来做到这一点。我使用的是 Excel 2007。

excel vba module excel-2007

5
推荐指数
1
解决办法
2647
查看次数

如何从命令行使用REG_EXPAND_SZ?

我正在阅读有关修改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.我试过以下不要让变量扩展,但是我无法强迫它不要:

  • 使用`%,^,\`转义`%%` - 即使我使用双引号也不起作用
  • 在整个/ d字符串周围使用单引号''
  • 使用`setlocal setdelayedexpansion`?......喜欢:

# (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"被其他程序正确扩展.问候.

windows command-line batch-file

4
推荐指数
2
解决办法
2万
查看次数

Excel,Visual Basic编辑器,枚举类型声明 - 未定义的用户定义类型

我有以下代码,我不知道为什么Excel没有EnumTest2()子例程中看到类型(我已声明):

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无法rlcRollercoasterStateTest2()子例程中看到类型?

excel vba declaration excel-2007 excel-vba

4
推荐指数
1
解决办法
2705
查看次数

C++,带有方法和枚举类型的类 - 方法和枚举值是否具有相同的名称?

我有以下课程:

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)

c++ enums class redefinition

3
推荐指数
1
解决办法
3357
查看次数

Excel,VBA编辑器 - Worksheet对象的属性的自动完成功能不起作用

我希望VBA编辑器使用自动完成功能来显示Worksheet对象的属性.

在此输入图像描述


在SuperUser上的这个问题中,我了解到Worksheetsobject Item()属性返回Variant类型.该类型不是Worksheet对象的强类型.

但是,即使我使用ActiveSheet对象或以下代码,IDE仍然不显示Worksheet对象的属性.

在此输入图像描述

我的问题是,如何使Excel中的VBA编辑器通过自动完成功能显示Worksheet对象的属性?

excel vba autocomplete excel-2007 excel-vba

2
推荐指数
1
解决办法
5516
查看次数

为什么某些字符代码缺少Windows-125*编码中的字符?

Windows-125*代码页中(实际上,在相应ISO*代码页中),某些字符代码没有定义相应的字符.留下一些没有角色的字符代码背后的前提是什么? windows-1252  - 缺少字形

我对这个问题的理解是:如果基于7位的代码页不够,并且必须发明多个8位代码页,那么那些8位代码页(从之前的经验中学习)应该具有尽可能多的字符.它是可能的,而实际上一些字符代码缺乏一个字符.

windows unicode codepages windows-1252

2
推荐指数
1
解决办法
147
查看次数