微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Excel Userform (VBA) - 如果选中复选框,如何在总计中添加值

如何解决Excel Userform (VBA) - 如果选中复选框,如何在总计中添加值

我在用户表单 (VBA) 中有多个复选框(1 到 8),它们的值在 Ride.Caption(1 到 8)中提到。如果我选中任何复选框,那么它在 Ride 中提到的值应添加到总价值中,如果我取消选中任何复选框,则该值应从总价值中扣除

根据以下代码,我已将所有值添加到 Total 中。但是,复选框编码仍然悬而未决,我不知道如何使此代码完整。用你的专业知识帮助我。

Private Sub TotalValue_Click()
Dim X As Double
X = 0
If Len(Ride1.Caption) > 0 Then X = X + Ride1.Caption
If Len(Ride2.Caption) > 0 Then X = X + Ride2.Caption
If Len(Ride3.Caption) > 0 Then X = X + Ride3.Caption
If Len(Ride4.Caption) > 0 Then X = X + Ride4.Caption
If Len(Ride5.Caption) > 0 Then X = X + Ride5.Caption
If Len(Ride6.Caption) > 0 Then X = X + Ride6.Caption
If Len(Ride7.Caption) > 0 Then X = X + Ride7.Caption
If Len(Ride8.Caption) > 0 Then X = X + Ride8.Caption
TotalValue.Caption = X
End Sub

https://ibb.co/7jh7mJh

解决方法

我选中任何复选框,那么它在 Ride 中提到的值应添加到总价值中,如果我取消选中任何复选框,则该值应从总价值中扣除

您可以循环处理所有复选框。你也不需要扣除。只需重新计算。

这是你正在尝试的吗?

Private Sub CommandButton1_Click()
    Dim TotalSum As Double
    Dim i As Long
    
    For i = 1 To 8
        If Controls("Ride" & i).Value = True Then
            TotalSum = TotalSum + Val(Controls("CheckBox" & i).Caption)
        End If
    Next i
    
    TotalValue.Caption = TotalSum
End Sub
,

这是你要尝试的吗? 我已经在循环中完成了,因为它更干净,更容易处理。

您需要将“CheckBox”更改为您的复选框的名称。

Private Sub TotalValue_Click()

Dim X As Double,i As Integer

X = 0
For i = 1 To 8
    If Me.Controls("CheckBox" & i).Value = True  And Len(Me.Controls("Ride" & i).Caption) > 0 Then 
        X = X + Me.Controls("Ride" & i).Caption
    End If
Next i
TotalValue.Caption = X

End Sub

或者,如果您希望在有人选中/取消选中复选框时更新总数,那么您可以为每个文本框添加更改事件,如下所示:

Private Sub CheckBox1_Change()

If Me.CheckBox1.Value = True Then
    Me.TotalValue.Caption = Me.TotalValue.Caption + Val(Me.Ride1.Caption)
Else
    Me.TotalValue.Caption = Me.TotalValue.Caption - Val(Me.Ride1.Caption)
End If

End Sub

同样,只需将“CheckBox1”更改为相关的复选框名称即可。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。