Excel 用户表单 - 如何编写命令按钮以在单击时输入 True 值而在未单击时输入 False 值?

Excel User Form - How to code the Command Button to enter a Value of True when Clicked and value of False when not clicked?

我是 VBA 编程的新手,但我已经开始学习基础知识。我是期货市场的交易员,所以我正在构建一个用户表单来协助保存记录。

我的带有 保存 按钮的用户表单似乎正确填充了相关单元格。我的问题是命令按钮:

单击后,保存 按钮将:

  1. 确保用户完成所有必填字段
  2. 正确完成后,它会将数据添加到下一个空行中的相关单元格。

命令按钮被命名为 LongShortYesNo,以及 Filters 框架中的按钮等。我正在尝试得到它:

比如我点击Long,当前工作表上没有数据,所以D3(在Long表头下)应该是TRUE。然后,当我输入一组不同的数据,并执行 not 单击 Long 时,它应该会在 D4(下一行)中显示 FALSE因为数据会在前一行......等等)。

我自己通过在线研究未能成功解决此问题。我很感激帮助学习编码 1 命令按钮,然后剩下的就很容易了。

我的命名约定是:

附加信息:代码

Option Explicit
Public myGlobalVar As Boolean
Private Sub btnClose_Click()
    Me.Hide
    Unload Me
End Sub
Private Sub btnLong_Click()
    myGlobalVar = True
End Sub

Private Sub btnSave_Click()

    Me.Hide


    If tbMkt.Value = "" Or tbEntry = "" Or tbStopLoss = "" Or tbTarget = "" Then
        If MsgBox("Form is not complete. Do you want to continue?", vbQuestion + vbYesNo) <> vbYes Then
        Exit Sub
        End If
    End If


    Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Offset(1, 0).Select
    ActiveCell.Value = tbMkt.Value
    ActiveCell.Offset(0, 1).Value = tbDate.Value
    ActiveCell.Offset(0, 2).Value = tbTime.Value
    ActiveCell.Offset(0, 3).Value = btnLong.Visible

    ActiveCell.Offset(0, 5).Value = tbEntry.Value
    ActiveCell.Offset(0, 6).Value = tbStopLoss.Value
    ActiveCell.Offset(0, 7).Value = tbTarget.Value

    MsgBox "Thank You for entering the details of your trade. They have been added to row " & ActiveCell.Row
    Unload Me

    Call resetForm

    Me.tbDate = Date
    tbDate.Value = Format(tbDate.Value, "dd/mm/yyyy")
    Me.tbTime = Time

End Sub

Sub resetForm()

    tbMkt.Value = ""
    tbDate.Value = ""
    tbTime.Value = ""
    tbEntry.Value = ""


    tbStopLoss.Value = ""
    tbTarget.Value = ""
    tradeEntryUserForm.tbMkt.SetFocus

End Sub

Private Sub UserForm_Click()

End Sub

Private Sub UserForm_Initialize()

    Me.tbDate = Date
    tbDate.Value = Format(tbDate.Value, "dd/mm/yyyy")
    Me.tbTime = Time

End Sub

Private Sub WithTrendFrame_Click()

End Sub

我已经按照上面的代码声明了 myGlobalVar。我已在 btnLong_Click() 中将其设置为 True,但我不确定第 2 步加载表单上设置为 False 的事件是什么意思?请帮忙。

希望我通过编辑添加更多关于我的问题的信息来做正确的事情...

用户表单:

工作表:

这真的很简单。

1) 设置一个boolean类型的全局变量

2) 表单加载事件设置为 false

3) 按钮点击事件设置为 true

4) 如有必要,找出应该在流程中的哪个位置重置值

此外,因为您调用了一个名为 "Reset form" 的函数,请注意,如果您重新加载表单,根据我的描述,如果遵循,它将重置布尔变量的值(可能是故意的,但由您决定。