我已经制作了一个按钮,可以在一个会计年度的每周开启或关闭员工。之后我会详细解释我的工作流程,但我的主要问题是:
每个按钮名为W1,W2,...,W52。我是否需要为每个按钮设置一个事件脚本?
Private Sub W1_Click()
updateActiveWeeks
End Sub
我想我不在乎我是否需要52个mini-sub,但这样做的效果似乎相当低效。此外,如果我需要进行任何更新,我需要进行52次更新,这将是一场噩梦。
奖励积分: 更多关于工作流程。我如何使这个表单工作是按下按钮时运行'updateActiveWeeks'。此子循环遍历所有W1 ... W52按钮以检查其状态,如果确实如此,它将特定代码应用于员工姓名上的表。然后“Form_Current”将检查此更新的表格并根据编码刷新切换按钮,以确保始终按下正确的按钮(这样,如果您切换记录,它将确保它显示正确的状态)。我的第二个问题是这是否是最佳方法?它“有效”,但我很好奇,如果我太过清爽了。
答案 0 :(得分:0)
以下是如何为所有52个切换按钮运行相同的事件脚本。
将此代码添加到表单中:
Private Function ToggleAny()
updateActiveWeeks
End Function
现在进入表单设计:
=ToggleAny()
就是这样!
答案 1 :(得分:0)
您的方法不是最有效的方法。为什么每次都需要检查每个按钮?
您可以通过updateActiveWeeks
更聪明来提高效率。
Public Function updateActiveWeeks(btn As Control)
'Change recordset/apply code to table according to a state change in button "btn".
Forms(myForm).Controls(btn.Name).Enabled = Not Forms(myForm).Controls(btn.Name).Enabled
End Function
现在,对于每个按钮子,您只需要调用此函数并传递按钮的名称。
Private Sub btn52_Click()
updateActiveWeeks(Me)
End Sub
您可以为每个按钮添加相同的代码行,因此您应该只需选择所有代码并放入updateActiveWeeks(this.Name)
即可自动创建上述子代码。
如果您需要更具体的代码,则必须提供更具体的上下文。这当然取决于您如何实现这一点,但您可能希望为您的用户实现重新开始按钮,其中包含以下子项:
Sub StartOver()
Dim strTemp As String
For num = 1 to 52
strTemp = "btn" & num
Forms(yourForm).Controls(strTemp).Enabled = True
'Reset table value for the button with name "strTemp"
Next num
End Sub