如何使用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