昨晚,想着考完试了,放松下,刷点视频,结果...趟下了
这几天,有小伙伴给小编留言,想看下一些关于单元格的一些玩法
为此,小编先做了个窗体,嗯!先写着,后面看到想到什么做什么...
今天先来玩下下Excel的查找替换,因为这个还是比较常用的
窗体先做成以下形式
由于还没想到做些什么,先画成这样,后续在改改...
晚上只做了查找的,明天再做替换
代码如下
Option Explicit
Private Sub UserForm_Initialize() '初始化窗体
Dim intX&
Dim aRes(1 To 56)
For intX = 1 To 56
aRes(intX) = intX
Next
With Me
With .颜色
.Font.Size = 11
.List = aRes
.ListIndex = 2
End With
.查找.Value = True
.完整.Value = True
End With
End Sub
Private Sub 区域选择_Click() '区域选择
Dim Rng As Range
Set Rng = Application.InputBox("数据来源", "请选择区域!!", ActiveCell.Address, , , , , 8)
If Rng Is Nothing Then Exit Sub
Set Rng = Intersect(Rng, Rng.Parent.UsedRange)
Me.区域.Value = Rng.Address
End Sub
Private Sub 执行_Click()
If Me.查找.Value Then
Call Find_Value
End If
End Sub
Sub Find_Value()
Dim Rng As Range, Cell As Range, RngData As Range
Dim strAddress$, strVal, strMatch$
Set RngData = Range(Me.区域.Text)
strVal = Me.查找内容.Text
If Len(strVal) = 0 Then MsgBox "请输入查找内容", 64, "出错": Exit Sub
With RngData
.Interior.ColorIndex = 0 '初始化背景色
strMatch = IIf(Me.完整.Value, xlWhole, xlPart) '匹配模式
Set Cell = .Find(what:=strVal, LookIn:=xlValues, Lookat:=strMatch)
If Cell Is Nothing Then MsgBox "[" & RngData.Address & "]区域中并无" & strVal, 64: Exit Sub
strAddress = Cell.Address '记录第一个单元格地址
Do
If Rng Is Nothing Then
Set Rng = Cell '初始化
Else
Set Rng = Union(Rng, Cell) '合并
End If
Set Cell = .FindNext(Cell) '查找下一个
Loop Until Cell.Address = strAddress
Rng.Interior.ColorIndex = Me.颜色.Text '标记背景颜色
Me.标记.Caption = "总共找到了" & Rng.Count & "个" '写入找到多少个
End With
End Sub
运行效果
代码并不是很多,关于窗体的加载什么的先不说,先看下查找的代码,
也就是第34行至57行
第37行先获取了选择的区域,也就是以下窗体获取的单元格区域
第38至39获取输入的内容,并且判断是不是空值
第41行初始化查询区域的背景颜色
第42行判断是完整匹配还是部分匹配
第43至45行判断是否存在查找的内容,如不存在退出程序,存在则记录第一个单元格的地址
第46至53行使用DO LOOP循环查找符合查找的内容
这里使用了FindNext也就是查找下一个的意思
第54至55行标记颜色并且输出查找到了多少个符合查找内容的个数
...
今天就到这了,明天继续画下
示例文件下载
链接:https://pan.baidu.com/s/1Yw8BpUtojrg4jyhEEUdsxw
提取码:abcd
收工!
如果小伙伴有好的思路,可以在小编的公众号留言发给小编研究下
文章觉得有用,点个赞+在看,你的每一次点赞和转发就是小编原创的动力
关注公众号 ↓
文章转载自Excel VBA练习,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。