我在excel中用vb userform画了一个图表,怎样在excel中加个按钮,将它调用出来呢?
5个回答
展开全部
Excel中的窗体控件功能非常强大,通过一个实例说明怎样用窗体控件快速构造出动态图表。
假设有一家公司要统计两种产品(产品X,产品Y)的销售情况,这两种产品的销售区域相同,不同的只是它们的销售量。按照常规的思路,我们可以为两种产品分别设计一个图表,但更专业的办法是只用一个图表,由用户选择要显示哪一批数据——即,通过单元按钮来选择图表要显示的数据。
为便于说明,我们需要一些示例数据。首先在A列输入地理区域,如图一,在B2和C2分别输入“产品X”和“产品Y”,在B3:C8区域输入销售数据。
一、提取数据
接下来的步骤是把某种产品的数据提取到工作表的另一个区域,以便创建图表。由于图表是基于提取出来的数据创建,而不是基于原始数据创建,我们将能够方便地切换提取哪一种产品的数据,也就是切换用来绘制图表的数据。
在A14单元输入=A3,把它复制到A15:A19。我们将用A11单元的值来控制要提取的是哪一种产品的数据(也就是控制图表要描述的是哪一批数据)。现在,在A11单元输入1。在B13单元输入公式=OFFSET(A2,0,$A$11),再把它复制到B14:B19。
OFFSET函数的作用是提取数据,它以指定的单元为参照,偏移指定的行、列数,返回新的单元引用。例如在本例中,参照单元是A2(OFFSET的第一个参数),第二个参数0表示行偏移量,即OFFSET返回的将是与参照单元同一行的值,第三个参数($A$11)表示列偏移量,在本例中OFFSET函数将检查A11单元的值(现在是1)并将它作为偏移量。因此,OFFSET(A2,0,$A$11)函数的意义就是:找到同一行且从A2(B2)偏移一列的单元,返回该单元的值。
现在以A13:B19的数据为基础创建一个标准的柱形图:先选中A13:B19区域,选择菜单“插入”→“图表”,接受默认的图表类型“柱形图”,点击“完成”。检查一下:A13:B19和图表是否确实显示了产品X的数据;如果没有,检查你是否严格按照前面的操作步骤执行。把A11单元的内容改成2,检查A13:B19和图表都显示出了产品B的数据。
二、加入选项按钮
第一步是加入选项按钮来控制A11单元的值。选择菜单“视图”→“工具栏”→“窗体”(不要选择“控件工具箱”),点击工具栏上的“选项按钮”,再点击图表上方的空白位置。重复这个过程,把第二个选项按钮也放入图表。
右击第一个选项按钮,选择“设置控件格式”,然后选择“控制”,把“单元格链接”设置为A11单元,选中“已选择”,点击“确定”,如图二。
把第一个选项按钮的文字标签改成“产品X”,把第二个选项按钮的文字标签改成“产品Y”(设置第一个选项按钮的“控制”属性时,第二个选项按钮的属性也被自动设置)。点击第一个选项按钮(产品X)把A11单元的值设置为1,点击第二个选项按钮把A11单元的值设置为2。
点击一下图表上按钮之外的区域,然后依次点击两个选项按钮,看看图表内容是否根据当前选择的产品相应地改变。
按照同样的办法,一个图表能够轻松地显示出更多的数据。当然,当产品数量很多时,图表空间会被太多的选项按钮塞满,这时你可以改用另一种控件“组合框”,这样既能够控制一长列产品,又节约了空间。
另外,你还可以把A11单元和提取出来的数据(A13:B19)放到另一个工作表,隐藏实现动态图表的细节,突出动态图表和原始数据
假设有一家公司要统计两种产品(产品X,产品Y)的销售情况,这两种产品的销售区域相同,不同的只是它们的销售量。按照常规的思路,我们可以为两种产品分别设计一个图表,但更专业的办法是只用一个图表,由用户选择要显示哪一批数据——即,通过单元按钮来选择图表要显示的数据。
为便于说明,我们需要一些示例数据。首先在A列输入地理区域,如图一,在B2和C2分别输入“产品X”和“产品Y”,在B3:C8区域输入销售数据。
一、提取数据
接下来的步骤是把某种产品的数据提取到工作表的另一个区域,以便创建图表。由于图表是基于提取出来的数据创建,而不是基于原始数据创建,我们将能够方便地切换提取哪一种产品的数据,也就是切换用来绘制图表的数据。
在A14单元输入=A3,把它复制到A15:A19。我们将用A11单元的值来控制要提取的是哪一种产品的数据(也就是控制图表要描述的是哪一批数据)。现在,在A11单元输入1。在B13单元输入公式=OFFSET(A2,0,$A$11),再把它复制到B14:B19。
OFFSET函数的作用是提取数据,它以指定的单元为参照,偏移指定的行、列数,返回新的单元引用。例如在本例中,参照单元是A2(OFFSET的第一个参数),第二个参数0表示行偏移量,即OFFSET返回的将是与参照单元同一行的值,第三个参数($A$11)表示列偏移量,在本例中OFFSET函数将检查A11单元的值(现在是1)并将它作为偏移量。因此,OFFSET(A2,0,$A$11)函数的意义就是:找到同一行且从A2(B2)偏移一列的单元,返回该单元的值。
现在以A13:B19的数据为基础创建一个标准的柱形图:先选中A13:B19区域,选择菜单“插入”→“图表”,接受默认的图表类型“柱形图”,点击“完成”。检查一下:A13:B19和图表是否确实显示了产品X的数据;如果没有,检查你是否严格按照前面的操作步骤执行。把A11单元的内容改成2,检查A13:B19和图表都显示出了产品B的数据。
二、加入选项按钮
第一步是加入选项按钮来控制A11单元的值。选择菜单“视图”→“工具栏”→“窗体”(不要选择“控件工具箱”),点击工具栏上的“选项按钮”,再点击图表上方的空白位置。重复这个过程,把第二个选项按钮也放入图表。
右击第一个选项按钮,选择“设置控件格式”,然后选择“控制”,把“单元格链接”设置为A11单元,选中“已选择”,点击“确定”,如图二。
把第一个选项按钮的文字标签改成“产品X”,把第二个选项按钮的文字标签改成“产品Y”(设置第一个选项按钮的“控制”属性时,第二个选项按钮的属性也被自动设置)。点击第一个选项按钮(产品X)把A11单元的值设置为1,点击第二个选项按钮把A11单元的值设置为2。
点击一下图表上按钮之外的区域,然后依次点击两个选项按钮,看看图表内容是否根据当前选择的产品相应地改变。
按照同样的办法,一个图表能够轻松地显示出更多的数据。当然,当产品数量很多时,图表空间会被太多的选项按钮塞满,这时你可以改用另一种控件“组合框”,这样既能够控制一长列产品,又节约了空间。
另外,你还可以把A11单元和提取出来的数据(A13:B19)放到另一个工作表,隐藏实现动态图表的细节,突出动态图表和原始数据
展开全部
你可以在加载项中添加你想要的按钮,具体代码如下:
Sub CreateToolBar()
Dim newTool As CommandBar
Dim i As Integer '如果发现有相同工具栏,删除该工具栏
On Error Resume Next
CommandBars("Custom Toolbar").Delete
On Error GoTo 0 '添加名称为“Custom Toolbar”的工具栏,并在工作表上方显示
Set newTool = CommandBars.Add(Name:="Custom Toolbar", Position:=msoBarTop)
With newTool
.Visible = True
With .Controls.Add(Type:=msoControlButton)
.Caption = "绘制图表"
.Style = msoButtonIconAndCaption
.TooltipText = "绘制图表"
.FaceId = 18
.OnAction = "drawChart"
End With
End With
End Sub
在VBA编辑器中插入模块,复制上诉代码后,运行一下,按钮就有了,运行的函数,就可以在加载项中添加绘制图表按钮,点击调用函数drawChart,可以改成你需要调用的函数
Sub CreateToolBar()
Dim newTool As CommandBar
Dim i As Integer '如果发现有相同工具栏,删除该工具栏
On Error Resume Next
CommandBars("Custom Toolbar").Delete
On Error GoTo 0 '添加名称为“Custom Toolbar”的工具栏,并在工作表上方显示
Set newTool = CommandBars.Add(Name:="Custom Toolbar", Position:=msoBarTop)
With newTool
.Visible = True
With .Controls.Add(Type:=msoControlButton)
.Caption = "绘制图表"
.Style = msoButtonIconAndCaption
.TooltipText = "绘制图表"
.FaceId = 18
.OnAction = "drawChart"
End With
End With
End Sub
在VBA编辑器中插入模块,复制上诉代码后,运行一下,按钮就有了,运行的函数,就可以在加载项中添加绘制图表按钮,点击调用函数drawChart,可以改成你需要调用的函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
插入一个按钮,指定宏,宏的内容为usersform.show
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按钮指定宏ccc,以下代码放到新建模块里面。
Sub ccc()
UserForm1.Show
End Sub
Sub ccc()
UserForm1.Show
End Sub
更多追问追答
追问
执行时报此处需要物件
好了,谢了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给按钮加上代码:userform.show
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询