ARTICLE · 1106481
如何像高手一样在Excel中通过按钮操控表格数据?
如何像高手一样在Excel中通过按钮操控表格数据?TEXT TUTORIAL 文字教程 
看下图中的例子,当点击按钮,在弹出的对话框中选择确定,就会将表中小于5的数字变成5,并且字体颜色变为紫色,如果选择取消表中数据就不会有任何改变。这是怎么做到的呢?以下将对其进行详细讲解。 


01 
首先在A1:D4单元格区域输入数据 

02 
找到【开发工具】选项卡,如果没有开发工具选项卡怎么办呢?那就点击【文件】选项卡,从【更多】中单击【选项】,在弹出的Excel选项对话框中选择【自定义功能区】,在右侧找到【开发工具】这一选项,在其复选框前打勾。这样【开发工具】选项卡就出来了。 


03 
从【开发工具】选项卡的【控件】功能区找到【插入】,点击【插入】下的倒三角箭头,在“表单控件”里单击”按钮(窗体控件)”,鼠标移动到表格中空白的位置点击,在弹出的指定宏的窗口中点击新建。 


04 
可以看到在弹出的【Microsoft Visual Basic for Applications】窗口中,自动新插入了一个模块,模块分成几个部分,下面这一部分是监视窗口,我们在函数中写的表达式,在监视窗口可以看它的值、看它的类型,进行监视,用来调试(debug)。而上面这一部分,实际就是写函数体用的。怎么写函数体呢? 

05 



06 
现在来写函数体,首先使用MsgBox 函数,这个函数是干什么的呢?可以从视图中点击对象浏览器或者直接按F2键,搜索框输入MsgBox进行搜索,找到对应的函数,右击函数,在弹出的选择框中选择帮助,就会在浏览器中加载出函数的语法等内容,可以对照看一下函数的用法。



07 
按照网页中的函数用法,我们来写函数体,模块中函数的开头和结尾的中间输入“Response = MsgBox("您确定要将小于5的数据重置为5吗?", vbOKCancel, "结束")”,这个会有什么样的效果呢?我们运行下试试,但是要注意如果我们的文件不是.xlsm结尾的,我们需要通过点击“另存为”将文件存储为Excel启用宏的工作簿(*.xlsm)。 


08 
在.xlsm结尾的文件中点击按钮,可以看到对话框中的信息,当点击确定,返回值Response 为1,当点击取消,返回值Response 为2。怎么知道的呢?可以看函数帮助页对于返回值的定义,或者通过打断点调试程序得知。 


09 


10 
在Then后面写一个“For Each...Next 语句”,意思是如果返回值为1,就要执行“For Each...Next ”里面的东西了。For Each...Next中间写啥呢?我们要先取到Sheet1工作表,所以要用到Worksheets,就是“Worksheets("Sheet1")”,再取到有数据的单元格的范围,就是“Worksheets("Sheet1").Range("A1:D4")”,然后再取区域中的单元格,就是“Worksheets("Sheet1").Range("A1:D4").Cells”。For Each后面是元素名,咱们起一个名字就叫c,这个元素是什么呢?是Sheet1表区域A1:D4中的单元格,所以循环搜索每一个单元格,就是“For Each c In Worksheets("Sheet1").Range("A1:D4").Cells...Next”。 

11 
接下来咱们需要判断每一个单元格的值,如果小于5,就把字体颜色设置为紫色并且把值设置为5。通过“Abs(c.Value)”取得单元格的值,通过“Abs(c.Value) < 5”判断如果小于5,就设置颜色“c.Font.Color = RGB(255, 0, 255)”,设置值“c.Value = 5”。最终函数代码为: “ ” 

12 
函数写完了,将函数保存后,我们运行试一下。点击按钮,取消,可以看到表中数值没有任何变化;而点击确定,可以看到单元格中小于5的数值,字体颜色变为了紫色并且把值置为了5。 





VIDEO TUTORIAL 视频教程 
完 



















可以看到已经自动生成的函数的开头和结尾,我们通过鼠标左键双击选中Sub,再按F1键就能打开帮助页看下Sub语句是干什么用的,里面语法,备注,示例都有,可以帮助我们理解Sub语句。

















那么如果返回值是1,要进行什么处理呢?使用“If...Then...Else 语句”,如下图,不会用的话选中If按F1键看下帮助。






Sub 按钮1_Click()
Response = MsgBox("您确定要将小于5的数据重置为5吗?", vbOKCancel, "结束")
If Response = 1 Then
For Each c In Worksheets("Sheet1").Range("A1:D4").Cells
If Abs(c.Value) < 5 Then
c.Font.Color = RGB(255, 0, 255)
c.Value = 5
End If
Next
End If
End Sub










关注
重播 分享 赞
