excel vba 复选框 全选

我要做一个Excel的报表,通过原始数据写公式自动计算成最终要呈现的数据。因为要展现每个月份的情况,现在用复选框进行了控制,比如点复选框“1月”,最终报表里面的数是一月份... 我要做一个Excel的报表,通过原始数据写公式自动计算成最终要呈现的数据。因为要展现每个月份的情况,现在用复选框进行了控制,比如点复选框“1月”,最终报表里面的数是一月份的数的计算结果。这个通过公式写进去就可以了。如果我要展示第一季度的,就要选“1月”,“2月”和“3月”。现在我想插入一个复选框,叫做“第一季度”,选中它以后前面说的3个复选框会自动勾选,取消选中以后这三个也会自动取消。另外,在这几个全部选中的情况下,取消选中其中的一个月份,“第一季度”复选框也会取消选择或者变成灰色;在这几个全部没有选中的情况下,选中这三个月份的复选框,“第一季度”复选框也会变成选中状态。同样还有“第二季度”,“第三季度”和“第四季度”是一样的情况。希望能把vba的代码写下来,不用四个季度的都写,写一个作示例就可以了。我现在用的是表单控件,不是Activex的控件。 展开
 我来答
姓王的wy451

推荐于2016-11-18 · TA获得超过48.3万个赞
知道大有可为答主
回答量:8万
采纳率:78%
帮助的人:8889万
展开全部
Private Sub CheckBox13_Click()
CheckBox13.TripleState = False
If CheckBox13.Value = True Then
CheckBox1.Value = True
CheckBox2.Value = True
CheckBox3.Value = True
Else
CheckBox1.Value = 0
CheckBox2.Value = 0
CheckBox3.Value = 0
End If
End Sub
Private Sub CheckBox1_Click()
Call abc(CheckBox1.Value, CheckBox2.Value, CheckBox3.Value)
End Sub
Private Sub CheckBox2_Click()
Call abc(CheckBox1.Value, CheckBox2.Value, CheckBox3.Value)
End Sub
Private Sub CheckBox3_Click()
Call abc(CheckBox1.Value, CheckBox2.Value, CheckBox3.Value)
End Sub
Function abc(t1 As Boolean, t2 As Boolean, t3 As Boolean)
If t1 And t2 And t3 Then
CheckBox13.Value = True
ElseIf Not t1 And Not t2 And Not t3 Then
CheckBox13.Value = False
Else
CheckBox13.TripleState = True
CheckBox13.Value = Null
End If
End Function
'说明:CheckBox13是第一季度复选框,CheckBox1、CheckBox2、CheckBox3分别是1、2、3月复选框。这几段程序满足你的选择状态要求,程序其他部分你自己考虑。其他几个季度也可调用ABC()函数过程
ouroldmonk
2012-05-29 · TA获得超过418个赞
知道小有建树答主
回答量:434
采纳率:0%
帮助的人:455万
展开全部
可以试试用数据透视表,可能需要用到时间分组。
2003为列,先生成透视表,将时间列拖入行字段,右键,组及显示明细数据,组合。里面可以选择按月和季度,完成后将字段再拖入页字段区域。就可以选择按月或者季度了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jidong2107
2012-05-30 · TA获得超过867个赞
知道小有建树答主
回答量:724
采纳率:75%
帮助的人:209万
展开全部
建议使用两个列表框,1个季度列表(listbox1),1个月份列表(listbox2),都带有勾选框,代码如下:
Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
X = ListBox1.ListIndex
Label1.Caption = ListBox1.ListIndex
If ListBox1.Selected(X) = True Then
For Y = 0 To ListBox2.ListCount - 1
If Y >= X * 3 And Y < X * 3 + 3 Then
ListBox2.Selected(Y) = True
Else
ListBox2.Selected(Y) = False
End If
Next Y
Else
For Y = 0 To ListBox2.ListCount - 1
If Y >= X * 3 And Y < X * 3 + 3 Then
ListBox2.Selected(Y) = False
End If
Next Y
End If
End Sub

Private Sub UserForm_Initialize()
For X = 1 To 4
ListBox1.AddItem X & "季度"
Next
For X = 1 To 12
ListBox2.AddItem X & "月份"
Next
End Sub
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式