学习目标:
使用excel操作vba完成对单元格的校验
学习内容:
例如:
- 开启 vba开发环境
- 掌握 vba基本语法
- 掌握条件语句
- 掌握循环语句
- 掌握常用函数
学习产出:
演示版本家庭和学生版2019
-
开启 vba开发环境
excel默认不开启宏,需手动打开
下面两种方式都可以进入开发模式
开发界面
-
掌握 vba基本语法
Public rgold As Range '---定义在模块中,记录从哪个单元格跳出
Public first As Integer '---初始化
Public value As String '---失去焦点的值
Public mRegExp As Object '正则表达式对象
Public result As Boolean '正则匹配结果
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'单元格改动事件
End Sub
- 掌握条件语句
if else:
If first = 0 And end=10 Then
statement
Else
statement
End If
switch case:
Select Case rgold.Column
Case 2
statement
Case 3
statement
End Select
- 掌握循环语句
For i = 0 To 10
MsgBox i
Next
- 掌握常用函数
vba常用函数 - 成品
修改数据记得过滤标题行,不然存在不符合校验被清空的风险
Public rgold As Range '---定义在模块中,记录从哪个单元格跳出
Public first As Integer '---初始化
Public value As String '---失去焦点的值
Public mRegExp As Object '正则表达式对象
Public result As Boolean '正则匹配结果
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If first = 0 Then
'如果第一次进入
Set rgold = Range("A1")
Set mRegExp = CreateObject("Vbscript.Regexp")
For i = 0 To 10
MsgBox i
Next
With mRegExp
.Global = True
.IgnoreCase = True
End With
End If
'Cells(1, 1).Value = "1"
If rgold.Cells.Count > 1 Then
'如果目标区域含有多个单元格 则退出
Exit Sub
End If
'Cells(1, 2).Value = "2"
value = Cells(rgold.Row, rgold.Column).value
If value <> "" Then
If first = 0 Then
'如果第一次进入
first = 1
Else
'根据列添加校验
Select Case rgold.Column
Case 2
With mRegExp
.Pattern = "^\d*$"
End With
result = mRegExp.Test(Trim(value))
If result Then
Else
Cells(rgold.Row, rgold.Column).value = ""
MsgBox result
End If
End Select
End If
End If
'Cells(rgold.Row, rgold.Column).Value = "1"
Set rgold = Target
End Sub
- 知识点拓展
debug,右键运行到光标处执行下一个断点
- 消息提示
MsgBox "消息提示"
MsgBox "消息警告", vbCritical