|
楼主 |
发表于 2011-3-16 23:56
|
显示全部楼层
第五讲 VBA语句(一)
一.With End With可以对代码进行精减
精简前的如下- 1# Sub Macro1()
- 2# ' Macro1 Macro
- 3# ' 宏由 999宝藏网 录制,时间: 2011-2-8
- 4# Selection.Font.Bold = True
- 5# With Selection.Font
- 6# .Name = "宋体"
- 7# .Size = 18
- 8# .Strikethrough = False
- 9# .Superscript = False
- 10# .Subscript = False
- 11# .OutlineFont = False
- 12# .Shadow = False
- 13# .Underline = xlUnderlineStyleNone
- 14# .ColorIndex = xlAutomatic
- 15# End With
- 16# Selection.Font.ColorIndex = 3
- 17# End Sub
复制代码 代码解析:第4行代码选中字体加粗;第五行到15中间用了一个With End With语句;第6行字体为宋体;第7行字体大小为18磅,Size是大小的意思;第8行Strikethrough是删除线的意思;第9行代码Superscript是上标的意思;第10行代码Subscript是下标的意思; 第11行OutlineFont字体空心的意思;第12行代码Shadow是阴影的意思;第13行代码是下划线类型为无;14行字体的颜色为自动
精简后的如下- 1# Sub Macro1()
- 2# With Selection.Font
- 3# .Name = "宋体"
- 4# .Size = 18
- 5# .Bold = True
- 6# .ColorIndex = 3
- 7# End With
- 8# End Sub
复制代码 代码解析:第2行选中的单元格字体进行设置;第3行代码字体为宋体;第4行代码字体大小为18磅;第5行代码字体加粗;第6行代码字体颜色为红色
二.If Then 判断语句(单行结构)- 1# Sub 按钮1_单击()
- 2# If Range("a1").Value >= 60 Then
- 3# Range("b1") = "及格"
- 4# End If
- 5# End Sub
复制代码 代码解析:第2行代码判断,如果A1单元格的值大于等于60,那么;第3代码在单元格B1输入及格
三. If Then Else(简单的多行分支结构)- 1# Sub 按钮1_单击()
- 2# If Range("A1").Value < 60 Then
- 3# Range("B1").Value = "不及格"
- 4# Else
- 5# Range("B1").Value = "及格"
- 6# End If
- 7# End Sub
复制代码 代码解析:
第2行代码判断,如果A1单元格的值小于60,那么;第3行代码给单元格B1赋值为”不及格”;第4行代码是否则;第5行代码给单元格B1赋值为”及格”
四. If Then ElseIf Then (ElseIf Then … )Else复杂的多行分支结构- 1# Sub 加循环的复杂的多行分支结构()
- 2# Dim I As Integer
- 3# For I = 2 To 11
- 4# If Range("A" & I) < 60 Then
- 5# Range("B" & I) = "不及格"
- 6# ElseIf Range("A" & I) < 70 Then
- 7# Range("B" & I) = "及格"
- 8# ElseIf Range("A" & I) < 80 Then
- 9# Range("B" & I) = "良好"
- 10# Else
- 11# Range("B" & I) = "优秀"
- 12# End If
- 13# Next I
- 14# End Sub
复制代码 代码解析:
第2行定义变量I为整型;第3行代码到13行代码用了一个循环语句For Next;第4行代码判断A列从A2开始到A11的值是否小于60;第5代码如果第4代码小于60,那么对应的B列从B2开始到B11单元格显示不及格,同理第6行,第7行,第8行,第9行代码。
五.Inputbox 和Msgbox函数- 1# Sub 按钮1_单击()
- 2# On Error Resume Next
- 3# Application.DisplayAlerts = 0
- 4# Sheet1.Delete
- 5# Application.DisplayAlerts = 1
- 6# ANS = MsgBox("只剩下最后一张工作表了,不能删除", 48, "佛山小老鼠提醒你")
- 7# End Sub
复制代码 代码解析:
第2行过程中有错语就忽掉;第3行阻止弹出保存提示对话框;第4行代码工作表1删除;第5行代码还原第3行代码,这两个是一对一对的用;第6行代码用输出函数MsgBox弹出提示- 1# Sub 按钮1_单击()
- 2# S = InputBox("请输入姓名", "输入提醒")
- 3# Range("A1") = S
- 4# End Sub
复制代码 代码解析:
:第2行用输入函数InPutbox提醒输入姓名且把其输入的值赋给S;第3行代码把S赋给单元格A1
附件代码解析- Sub 按钮1_单击()
- If Range("a1").Value >= 60 Then '单元格A1的值大等于60那么
- Range("b1") = "及格" '单元格B1的值为及格
- End If
- End Sub
复制代码- Sub 按钮1_单击()
- If Range("A1").Value < 60 Then '单元格A1的值小于60 那么
- Range("B1").Value = "不及格" '单元格B1显示为不及格
- Else '否则
- Range("B1").Value = "及格" '单元格B1显示为及格
- End If
- End Sub
复制代码- Sub 加循环的复杂的多行分支结构()
- Dim I As Integer '定义变量I为整型
- For I = 2 To 11 '给变量I赋值从2到11
- If Range("A" & I) < 60 Then '从A2到A11单元格值小于60的那么
- Range("B" & I) = "不及格" '与其对应的B2到B11单元格显示不及格
- ElseIf Range("A" & I) < 70 Then '从A2到A11单元格值小于70的那么
- Range("B" & I) = "及格" '与其对应的B2到B11单元格显示及格
- ElseIf Range("A" & I) < 80 Then '从A2到A11单元格值小于80的那么
- Range("B" & I) = "良好" '与其对应的B2到B11单元格显示良好
- Else '否则
- Range("B" & I) = "优秀" '与其对应的B2到B11单元格显示优秀
- End If
- Next I '下一个I
- End Sub
复制代码- Sub 清除()
- Range("B2:B11") = "" '清除B2:B11数据
- End Sub
复制代码- Sub 按钮1_单击()
- S = InputBox("请输入姓名", "输入提醒") '输入函数INPUTBOX
- Range("A1") = S '把输入的值赋给单元格A1
- End Sub
复制代码- Sub 按钮1_单击()
- MsgBox "我在学VBA" '输出函数,把值用对话框显示出来
- End Sub
复制代码- Sub 按钮1_单击()
- On Error Resume Next '有错误忽略掉
- Application.DisplayAlerts = 0 '关闭屏幕刷新,加快程序运行
- Sheet1.Delete '工作表删除
- Application.DisplayAlerts = 0 '打开屏幕刷新
- ANS = MsgBox("只剩下最后一张工作表了,不能删除", 48, "佛山小老鼠提醒你") '输出函数,弹出一警告,第二个参数的值是48
- End Sub
复制代码 第六讲 VBA语句(二) 122楼 http://club.excelhome.net/thread-691838-13-1.html
[ 本帖最后由 佛山小老鼠 于 2011-3-17 23:48 编辑 ] |
|