我创建了一些复选框,我在列表框中选择,如果我我该怎么办添加一个值来总结它们,我将其作为餐厅菜单创建,而我不这样做知道如何总结一下,也许有人可以帮助我。我是Applications Visual Basic的初学者,但我不知道如何做到这一点。也许我需要添加一个新列表框,其中将显示值,然后将它们求和它们
`Private Sub CheckBox1_Change()
If CheckBox1.Value = True Then
ListBox1.AddItem CheckBox1.Caption
CheckBox1.Enabled = False
End If
End Sub
Private Sub CheckBox10_Change()
If CheckBox10.Value = True Then
ListBox1.AddItem CheckBox10.Caption
CheckBox10.Enabled = False
End If
End Sub
Private Sub CheckBox11_Change()
If CheckBox11.Value = True Then
ListBox1.AddItem CheckBox11.Caption
CheckBox11.Enabled = False
End If
End Sub
Private Sub CheckBox12_Change()
If CheckBox12.Value = True Then
ListBox1.AddItem CheckBox12.Caption
CheckBox12.Enabled = False
End If
End Sub
Private Sub CheckBox2_Change()
If CheckBox2.Value = True Then
ListBox1.AddItem CheckBox2.Caption
CheckBox2.Enabled = False
End If
End Sub
Private Sub CheckBox3_Change()
If CheckBox3.Value = True Then
ListBox1.AddItem CheckBox3.Caption
CheckBox3.Enabled = False
End If
End Sub
Private Sub CheckBox4_Change()
If CheckBox4.Value = True Then
ListBox1.AddItem CheckBox4.Caption
CheckBox4.Enabled = False
End If
End Sub
Private Sub CheckBox5_Change()
If CheckBox5.Value = True Then
ListBox1.AddItem CheckBox5.Caption
CheckBox5.Enabled = False
End If
End Sub
Private Sub CheckBox6_Change()
If CheckBox6.Value = True Then
ListBox1.AddItem CheckBox6.Caption
CheckBox6.Enabled = False
End If
End Sub
Private Sub CheckBox7_Change()
If CheckBox7.Value = True Then
ListBox1.AddItem CheckBox7.Caption
CheckBox7.Enabled = False
End If
End Sub
Private Sub CheckBox8_Change()
If CheckBox8.Value = True Then
ListBox1.AddItem CheckBox8.Caption
CheckBox8.Enabled = False
End If
End Sub
Private Sub CheckBox9_Change()
If CheckBox9.Value = True Then
ListBox1.AddItem CheckBox9.Caption
CheckBox9.Enabled = False
End If
End Sub
Private Sub CommandButton1_Click()
CheckBox1.Enabled = True
CheckBox2.Enabled = True
CheckBox3.Enabled = True
CheckBox4.Enabled = True
CheckBox5.Enabled = True
CheckBox6.Enabled = True
CheckBox7.Enabled = True
CheckBox8.Enabled = True
CheckBox9.Enabled = True
CheckBox10.Enabled = True
CheckBox11.Enabled = True
CheckBox12.Enabled = True
ListBox1.Clear
End Sub
Private Sub CommandButton2_Click()
MsgBox ("Ordered Successfully!")
End Sub
Private Sub Label1_Click()
End Sub
Private Sub Label2_Click()
End Sub
Private Sub Label3_Click()
End Sub
Private Sub Label4_Click()
End Sub
Private Sub ListBox1_Click()
End Sub
Private Sub UserForm_Click()
End Sub`
我认为复选框标题具有数字值作为标题。尝试此代码
Private Sub CommandButton2_Click()
Dim ctl As Control
Dim tot As Double
For Each ctl In Me.Controls
If TypeName(ctl) = "CheckBox" Then
If ctl.Value = True And IsNumeric(ctl.Caption) Then
tot = tot + Val(ctl.Caption)
End If
End If
Next ctl
MsgBox "Total = " & tot & Chr(10) & "Ordered Successfully"
End Sub
如果我正确理解您,则需要在每个复选框事件中声明模块级别的私有变量l_Chx As Byte
并将其增加/减少1,以获取当前检查框的数量。。
我想你想总结标签字幕
假设Label1
标题在检查CheckBox1
(Label2
和CheckBox2
等相同(后要求和,则您可能需要:
-
在您的用户形式代码窗格的最顶部添加
Dim total As Double
-
用户形式代码窗格中的任何地方:
Private Sub CBChange(cb As MSForms.CheckBox) With cb If .Value Then Me.ListBox1.AddItem .Caption .Enabled = False total = total + Val(Me.Controls("label" & Replace(.Caption, "CheckBox", ""))) End If End With End Sub
-
更改所有复选框
Change
事件处理程序如下:Private Sub CheckBox1_Change() CBChange Me.ActiveControl End Sub Private Sub CheckBox2_Change() CBChange Me.ActiveControl End Sub ... and so on..
顺便说一句,您可能需要更改CommandButton1_Click
事件处理程序如下:
Private Sub CommandButton1_Click()
Dim iCB As Long
With Me
For iCB = 1 To 12
.Controls("CheckBox" & iCB).Enabled = True
Next
.ListBox1.Clear
End With
End Sub
因为您将项目添加到ListBox
,因此可以简单地使用ListBox1.ListCount
返回项目数。
(编辑:以下是基于用户通常期望的事情的一般注释。但是,OP代码包括在检查时禁用复选框,因此用户无法取消选中项目。(
您的代码中缺少的是某人取消选中项目(CheckBoxX_Change
中的CheckBoxX.Value = False
( - 然后您必须从ListBox
中删除项目。互联网上将有很多示例"从列表框中删除项目"。