excel中多个复选框给单元格赋值问题 40

复选框横向纵向5个,横向纵向各一个单元格,要求横向的那个单元格等于横向复选框的选择个数,纵向的那个单元格等于纵向复选框的选择个数。例如:(举例中"?“代表一个复选框),E... 复选框横向纵向5个,横向纵向各一个单元格,要求横向的那个单元格等于横向复选框的选择个数,纵向的那个单元格等于纵向复选框的选择个数。
例如:(举例中"?“代表一个复选框),E1单元格里的数值等于横向选中复选框的个数,A7单元格里的数值等于纵向选中复选框的个数。跪求各位大侠帮帮小弟,小弟祝您一生平安幸福快乐,谢谢了!注:我用的复选框是vba里的控件工具箱中的复选框!如果有窗体的解决方法也可以,谢谢!小弟只有20分,当做帮帮小弟吧!
? ? ? ? ? E1
?
?
?
?
A7
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
百度网友a2910c9
2012-02-22 · TA获得超过120个赞
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:144万
展开全部
对每一个横向的复选框(如CheckBox1)的单击事件中输入:
Private Sub CheckBox1_Click()
If CheckBox1.Value = False Then
Sheet1.Range("e1") = Sheet1.Range("e1") - 1
Else
Sheet1.Range("e1") = Sheet1.Range("e1") + 1
End If
End Sub
对每一个纵向的复选框(如CheckBox6)的单击事件中输入:
Private Sub CheckBox6_Click()
If CheckBox1.Value = False Then
Sheet1.Range("a7") = Sheet1.Range("a7") - 1
Else
Sheet1.Range("a7") = Sheet1.Range("a7") + 1
End If
End Sub
即可实现。试试吧。
更多追问追答
追问
可是单元格如果本身有一个值而我没有选择复选框的话,那单元格的值岂不是与复选框无关?我的意思是单元格的值需要随时根据复选框的选择而变动!
追答
这个问题需要你自己来控制。如增加一个按钮来清除E1或A7的内容;或增加一个文本框和按钮配合来设置E1或A7的初值。
每个复选框中只考虑自己的消息处理最简单。
当然,也可以在复选框中对其他复选框的状态进行统计来设置E1或A7的值。
Private Sub CheckBox1_Click()
i = 0
If CheckBox1.Value = True Then i = i + 1
If CheckBox2.Value = True Then i = i + 1
If CheckBox3.Value = True Then i = i + 1
If CheckBox4.Value = True Then i = i + 1
If CheckBox5.Value = True Then i = i + 1
Sheet1.Range("e1") = i
End Sub
接着,
Private Sub CheckBox2_Click()
i = 0
If CheckBox1.Value = True Then i = i + 1
If CheckBox2.Value = True Then i = i + 1
If CheckBox3.Value = True Then i = i + 1
If CheckBox4.Value = True Then i = i + 1
If CheckBox5.Value = True Then i = i + 1
Sheet1.Range("e1") = i
End Sub
一直到CheckBox5的Click事件处理程序都一样,只是函数名字变为Private Sub CheckBox3_Click(),Private Sub CheckBox4_Click(),Private Sub CheckBox5_Click()。这样,水平复选框就可以了。纵向中形如下:
Private Sub CheckBox6_Click()
i = 0
If CheckBox6.Value = True Then i = i + 1
If CheckBox7.Value = True Then i = i + 1
If CheckBox8.Value = True Then i = i + 1
If CheckBox9.Value = True Then i = i + 1
If CheckBox10.Value = True Then i = i + 1
Sheet1.Range("a7") = i
End Sub
这次应该可以解决你的问题了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Zipall
2012-02-22 · TA获得超过1.3万个赞
知道大有可为答主
回答量:8104
采纳率:42%
帮助的人:8474万
展开全部
晕了,怎么今天一堆人问这个问题?
哪家的作业啊
更多追问追答
追问
大侠,能帮忙解决一下吗?小弟急啊!!!
追答
插入一个类模块,并将其命名为MyCheckBox
然后在其中添加如下代码
Public WithEvents ckb As MSForms.CheckBox

Private Sub ckb_Change()
If ckb Then i = 1 Else i = -1
If Replace(ckb.Name, "CheckBox", "") > "5" Then Set a = Range("e1") Else Set a = Range("a7") '假设checkbox1-5控制e1,6-10控制a7
With a '指定单元格
.Value = .Value + i
End With
End Sub

再在thisworkbook中添加如下代码
Dim co As New Collection
Private Sub Workbook_Open()
Dim myckb As MyCheckBox
For i = 1 To 10
Set myckb = New MyCheckBox
Set myckb.ckb = Sheets("sheet1").OLEObjects("CheckBox" & i).Object '假设要设置的3个checkbox在sheet1.
co.Add myckb
Next
Set myckb = Nothing
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式