【发布时间】:2019-09-19 05:57:32
【问题描述】:
我已经搜索并尝试了6个小时,但我无法解决问题。
我的想法: 我想在 Excel-VBA 中显示一个带有一些单选按钮、一个列表元素和一个文本字段的用户窗体。 我想将一些参数传递给用户表单以使用它,因为我不想在用户表单代码中进行计算(这有效) 我也不想声明全局变量。
我尝试了以下方法:
直接在用户表单中计算
全局变量
这没有奏效:
将用户表单声明为变量并使用该变量
[Public|Private|Friend] Property Let (ByRef|ByVal)的所有可能组合Property Set在任何情况下都不起作用
我的主(模块)代码
Option Explicit
Sub main()
With New usr_mainInput
.counter = 3
.Show
End With
End Sub
我在用户表单中的代码
Option Explicit
Private miCounter As Integer
Property Get counter() As Integer
counter = miCounter
End Property
Property Let counter(c As Integer)
Set miCounter = c
End Property
Private Sub userform_initialize()
Dim i As Integer
For i = 1 To counter 'miCounter don't work as well
Debug.Print i
Next i
End Sub
Private Sub btn_ok_Click()
Me.Hide
End Sub
对象变量或未设置块变量
如果涉及到Property Let counter(),它会抛出一个编译错误:
需要对象(错误 424)
【问题讨论】:
-
在
Property Let counter()中去掉Set。 -
我想我明白了...
_initialize的时刻还早,此时.counter没有设置,Property Let counter()我不必设置@987654331 @,这就是丢弃错误的原因。使用_activate它可以工作。明天我将在办公室尝试我的现场节目,这只是一个短暂的重建。
标签: vba properties userform