如何使用VBA实现excel内容处理
- 一、sheet页内内容处理
- 1、获取总行数和总列数
- 2、查找关键字所在列
- 3、查找不到关键字的反馈处理
- 4、判断列中是否存在合并单元格
- 5、判断列中是否存在空单元格
- 6、判断列中是否存在重复单元格
- 二、sheet跨页内容处理
- 1、拷贝已有sheet,新增sheet
- 2、对新sheet内容进行处理
- 3、判断是否存在同名sheet
- 4、将当前sheet页作为超链接插入其它某个sheet
- 三、窗体与sheet页交互
- 1、sheet页设置按钮,点击按钮弹出窗体
- 2、窗体传输参数并调用sheet页主程序
- 3、sheet页主程序获取参数并执行程序体
一、sheet页内内容处理
1、获取总行数和总列数
(1)总行数
ActiveSheet.UsedRange.Rows.Count
(2)总列数
ActiveSheet.UsedRange.Columns.Count
2、查找关键字所在列
(1)查找列号👉方法1
Num = Application.Range("2:2").Find("关键字").Column
(2)查找列号👉方法2
For Each col In Range("2:2")
If col.Value = "关键字" Then
Num = col.Column
End If
Next
(3)列号转列名
CName = Replace(Cells(1, Num).Address(0, 0), "1", "")
3、查找不到关键字的反馈处理
在第2行所有单元格中查找
k = 0
For Each cel In Range("2:2")
If cel = “关键字” Then
k = k + 1
End If
Next
If k = 0 Then
MsgBox "找不到关键字,程序即将退出..."
Exit Sub
End If
4、判断列中是否存在合并单元格
对列CName ,从第3行开始,逐行检查直到第n行
For Each cel In Range(CName & "3:" & CName & n)
If cel.MergeCells Then
MsgBox "列存在合并的单元格,请检查!"
End If
Next
5、判断列中是否存在空单元格
对列CName ,从第3行开始,逐行检查直到第n行
For Each cel In Range(CName & "3:" & CName & n)
If cel.Value = "" Then
MsgBox "列存在空单元格,请检查!"
End If
Next
6、判断列中是否存在重复单元格
对列CName(列号Num) ,从第3行开始,逐行检查直到第n行
For i = 3 To n
If Application.CountIf(Range(CName & "3:" & CName & n), Cells(i, Num)) > 1 Then
MsgBox "列存在重复数据!"
Exit Sub
End If
Next
二、sheet跨页内容处理
1、拷贝已有sheet,新增sheet
在所有sheet页后面,新增sheet
Sheets("已有sheet名称").Copy After:=Sheets(Sheets.Count)
2、对新sheet内容进行处理
(1)定位到新sheet
行编号RNum, 列编号CNum
Sheets("已有sheet名称 (2)").Select
ActiveSheet.Cells(RNum, CNum).Value = “输入值”
注:新增sheet时,默认会先以“所拷贝的sheet的名称+ (2)”为名
(2)不定位到新sheet,通过调用新sheet名称进行处理
Sheets(已有sheet名称 (2)).Cells(RNum, CNum).Value = “输入值”
3、判断是否存在同名sheet
'若不存在同名sheet
If Sheets(shtname) Is Nothing Then
......
'若存在同名sheet
Else
......
End If
4、将当前sheet页作为超链接插入其它某个sheet
插入超链接的区域格式为:开始列名+列号:结束列名+列号,例如B1:C16
Sheets("其它某个sheet名称").Select
Range("B1:C16").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"当前sheet名称+超链接需要跳转到的当前sheet的位置", TextToDisplay:="超链接显示文本"
三、窗体与sheet页交互
1、sheet页设置按钮,点击按钮弹出窗体
Sub 打开窗体()
UserForm1.Show
End Sub
2、窗体传输参数并调用sheet页主程序
窗体设置输入框和按钮,点击按钮传输参数并调用sheet页主程序
Private Sub CommandButton1_Click()
Call sheet页主程序
End Sub
3、sheet页主程序获取参数并执行程序体
Public 参数1, 参数2, 参数3
Sub sheet页主程序()
'获取窗体参数,窗体id为UserForm1
参数1 = UserForm1.TextBox1.Value
参数2 = UserForm1.TextBox2.Value
参数3 = UserForm1.TextBox3.Value
'关闭窗体
Unload UserForm1
...
'执行程序体
...
End Sub