我已经使Eric Bentzen日期选择器适应了我的需要(website and original file),现在我正尝试将其用于两个不同的UserForm,但尝试避免添加两个单独的按钮来移动输入的日期。
始终打开第一个UserForm(将其称为ApplicationUF)或第二个UserForm(将其称为AnswersUF),但绝不会同时打开两者。
两个表单都具有用于输入日期的TextBox。我的想法是,在单击该文本框日期选择器用户窗体后,出现用户选择日期,单击保存按钮,日期选择器用户窗体关闭,输入的日期移至活动的用户窗体专用日期文本框。但是我在引用活动的用户窗体时遇到了麻烦。
TLDR:如何确定哪个用户窗体处于活动状态,并将值从另一个用户窗体移至该用户窗体?
到目前为止,我的代码:
在日期选择器用户窗体中,所选的日期变量在单独的模块中声明为公共变量
Public datFirstDay As Date
现在,我正在尝试在日期选择器用户窗体中添加on_clik事件以保存按钮,以确定活动的用户窗体并移动输入的日期。到目前为止,我的代码:
Private Sub cmdSave_Click()
'I am having problem determining which use form is open
'I figured out that syntax should probably look something like this
'but this obviously doesent work since as far as I understand IsLoaded used only in Acces
'how can I adapt it to excel?
If VBA.UserForms("ApplicationUF").IsLoaded = True Then
ApplicationUF.rDateTB.Value = datFirstDay
ElseIf VBA.UserForms("AnswersUF").IsLoaded = True Then
AnswersUF.DateTB.Value = datFirstDay
End If
cmdCancel_Click
End Sub
我认为这并不重要,但以防万一我添加了cmdCancel_Click子代码。这是Eric Bentzen编写的原始代码,未更改。
Private Sub cmdCancel_Click()
Set colLabelEvent = Nothing
Set colLabels = Nothing
bSecondDate = False
sActiveDay = Empty
lFirstDay = 0
Unload Me
End Sub
答案 0 :(得分:1)
要检查是否已加载UserForm(又名可见),可以使用此功能:
public static double average(double[] arr) {
double sum = 0.0;
for (int = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum / arr.length;
}
用法示例:
Public Function formLoaded(frmName As String) As Boolean
Dim f
For Each f In UserForms
Debug.Print f.Name
If f.Name = frmName Then formLoaded = True
Next f
End Function
关于在表单之间传递信息,我将使用public variables。