【问题标题】:How is non-standard worksheet.object created in this Excel VBA如何在此 Excel VBA 中创建非标准 worksheet.object
【发布时间】:2010-11-17 00:17:17
【问题描述】:

Excel 2000 代码中的以下 VBA 6
驻留在具有文本框、组合框和按钮的表单中 其中一个是 txtUsername,另一个是 txtPassword --我继承了这段代码

With shtName
.Unprotect "thepassword"
.range("somenamedrange").Value = cboComboBox.Value
.txtUsername.Text = txtUsername.Text
.txtPassword.Text = txtPassword.Text
...
End With  

代码为 VBA 编辑器对象列表 中出现的两个 工作表对象 设置文本值,但在 Excel 项目中的其他任何地方都没有定义或设置。 Option Explicit 用于所有 Microsoft Excel 对象、表单和模块。我可以在 VBA 编辑器中为所述工作表上的所述工作表对象创建过程(例如,

Private Sub txtUsername_Change()  

End Sub

没有对象

worksheet.txt用户名

worksheet.txt密码

出现也未设置为命名范围。
两个对象的值仅在其他地方使用,具体参考 worksheet.txtUsername.Text
这些值在工作表上设置后不会显示在本地窗口中。它们肯定会被使用,因为 Essbase 查询使用这些对象成功完成。

总结: 我了解 formName.txtUsername.Text(或 .Value)
我不理解没有通过代码定义或实例化的 工作表对象
我唯一的好主意是导出工作表并在文本编辑器中查看,看看我的祖先是否以在类模块中定义“默认属性”的方式创建了一个“自定义”工作表对象——通过文本编辑器手动 (在 worksheet.cls 中没有提到这两个属性)

谢谢。

【问题讨论】:

    标签: class object excel worksheet vba


    【解决方案1】:

    作为 Excel 电子表格一部分的工作表不必实例化,它们是工作簿的一部分并且“始终存在”。如果它们对用户不可见但在项目浏览器中可见,则“ThisWorkbook”部分中可能有一些代码在工作簿启动时使工作表不可见(.visible = false)。

    【讨论】:

    • 是的,“可见属性”或“类型属性”或“激活方法”内置于 Excel 工作表类中。仅对于此工作表,Me.Activate、Me.Type、... Me.txtUsername、Me.txtPassword 是选项,但没有代码、没有宏、没有加载项,我可以找到将这些作为一部分注入Excel 工作表对象
    • 具体来说:Excel 对象浏览器显示 VBAProject 包含带有成员 txtUsername 和 txtPassword 的类 sheetName 但是没有定义如何注入这两个成员!
    • 取消保护并取消隐藏所有行和所有列 F5 > 特殊>对象“未找到对象”或右键单击对象浏览器中的 txtUsername 成员“包含对无法找到的对象定义的引用”
    【解决方案2】:

    我发现VBA Code Cleaner 清理了“对无法找到的对象定义的引用”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      相关资源
      最近更新 更多