Forms 如何在使用VBA单击一次后使access窗体中的按钮保持禁用状态
我试图编写一个按钮,允许用户只点击一次。单击一次后,我已成功禁用该按钮,但当我重新打开表单时,该按钮仍处于启用状态 如何在单击一次后使按钮保持禁用状态。最后,我想创建一个包含表单的ACCDE,该表单有一个只启用一次的按钮。ACCDE文件将用于不同的项目,每次启动新项目时,都将使用通用ACCDE文件的副本。每次启动新项目(即打开ACCDE的通用副本)时,该按钮都需要在内部启用,并在用户单击该按钮后变为禁用状态,并对该特定项目保持永久禁用状态 我设法为那个按钮做了如下编码Forms 如何在使用VBA单击一次后使access窗体中的按钮保持禁用状态,forms,ms-access,button,vba,Forms,Ms Access,Button,Vba,我试图编写一个按钮,允许用户只点击一次。单击一次后,我已成功禁用该按钮,但当我重新打开表单时,该按钮仍处于启用状态 如何在单击一次后使按钮保持禁用状态。最后,我想创建一个包含表单的ACCDE,该表单有一个只启用一次的按钮。ACCDE文件将用于不同的项目,每次启动新项目时,都将使用通用ACCDE文件的副本。每次启动新项目(即打开ACCDE的通用副本)时,该按钮都需要在内部启用,并在用户单击该按钮后变为禁用状态,并对该特定项目保持永久禁用状态 我设法为那个按钮做了如下编码 Private Sub C
Private Sub Command21_Click()
DoCmd.OpenQuery "Reset AutoCounter"
Command21.Enabled = False
Command25.SetFocus
End Sub
上面的代码在单击一次后禁用该按钮,但当您关闭表单并重新打开它时,该按钮将显示为已启用
是否有一个代码,我可以用来保持按钮禁用 您可以在设计时这样做:
- 在VBA IDE中,从项目视图中选择所需的
,并将其显示在主代码窗格中UserForm
- 选择其
控件Command21
- 在
视图(F4弹出)中,将其Properties
属性设置为Enabled
False
- 在
code窗格中插入此项:UserForm
Private Sub UserForm_Initialize() Command21.Enabled = False End Sub
Private Sub Form_Open()
If IsNull(TempVars("ProjectEnabled").Value) Then
' Initialise.
TempVars.Add "ProjectEnabled", True
End If
Me!Command21.Enabled = TempVars("ProjectEnabled").Value
End Sub
Private Sub Command21_Click()
Command25.SetFocus
DoCmd.OpenQuery "Reset AutoCounter"
Command21.Enabled = False
TempVars "ProjectEnabled", False
End Sub
编辑
测试表明,由于临时变量不是持久性的,所以上述方法不起作用
因此,简单的解决方法是创建一个带有默认值为True的布尔字段的小型本地表,然后在单击按钮时将其更新为False。创建一个本地表并将其隐藏。
使用该表中的值来确定是否在窗体加载或应用程序加载(使用全局变量)时隐藏并启用它。这两种方法都会在不单击的情况下永久禁用按钮。我希望按钮在单击一次后被永久禁用。关闭表单并重新打开后,按钮仍应被禁用。请指出,这两种方法都不会“永久禁用按钮”,因为它们只是禁用按钮,任何其他代码都可以随时重新启用它。无论如何,我知道我没有抓住你真正的需要。对不起。希望其他人会帮助你。使用按钮上方的代码将在ACCDE中永久禁用,并且你无法在ACCDE中更改代码或更改设计。无论如何,谢谢你的时间。我甚至不知道ACCDE是什么。我的错,我在回答之前没有问你,也没有让我投反对票……你必须将信息存储在项目表中,并在运行时设置为启用,例如在
OnCurrent
中。嗨,安德烈,请你详细说明一下。我是新访问vba的。您需要将值存储在数据源中,而不是将其“存储”在内存中的变量中。您需要另一列,无论是在新表中还是只有一行的现有表中,用于存储是否单击了按钮。谢谢您的答复,但您能否解释一下“ProjectEnabled”是什么意思。注:代码docen不适用于第3行“TempVars”ProjectEnabled,“True”它只是这个存储变量的一个名称,可以是任何东西。并且忘记了添加方法,对不起。请看编辑。谢谢。这是我想要的,但唯一的小问题是,当您关闭数据库并重新打开它时,该按钮将被启用。当您在后台打开access程序时,TempVars工作得非常好,但是当您关闭并重新打开它时,按钮变为enable(启用)。看起来您是对的。我不使用临时变量,但我认为它们是持久的,但它们不是;当您关闭应用程序时,所有的临时变量都会失效。因此,您可能需要创建属性或(更简单)使用本地表。见编辑后的答案。