昨晚,想着考完试了,放松下,刷点视频,结果...趟下了
这几天,有小伙伴给小编留言,想看下一些关于单元格的一些玩法
为此,小编先做了个窗体,嗯!先写着,后面看到想到什么做什么...
今天先来玩下下Excel的查找替换,因为这个还是比较常用的
窗体先做成以下形式

由于还没想到做些什么,先画成这样,后续在改改...
晚上只做了查找的,明天再做替换
代码如下
Option ExplicitPrivate Sub UserForm_Initialize() '初始化窗体Dim intX&Dim aRes(1 To 56)For intX = 1 To 56aRes(intX) = intXNextWith MeWith .颜色.Font.Size = 11.List = aRes.ListIndex = 2End With.查找.Value = True.完整.Value = TrueEnd WithEnd SubPrivate Sub 区域选择_Click() '区域选择Dim Rng As RangeSet Rng = Application.InputBox("数据来源", "请选择区域!!", ActiveCell.Address, , , , , 8)If Rng Is Nothing Then Exit SubSet Rng = Intersect(Rng, Rng.Parent.UsedRange)Me.区域.Value = Rng.AddressEnd SubPrivate Sub 执行_Click()If Me.查找.Value ThenCall Find_ValueEnd IfEnd SubSub Find_Value()Dim Rng As Range, Cell As Range, RngData As RangeDim strAddress$, strVal, strMatch$Set RngData = Range(Me.区域.Text)strVal = Me.查找内容.TextIf Len(strVal) = 0 Then MsgBox "请输入查找内容", 64, "出错": Exit SubWith 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 SubstrAddress = Cell.Address '记录第一个单元格地址DoIf Rng Is Nothing ThenSet Rng = Cell '初始化ElseSet Rng = Union(Rng, Cell) '合并End IfSet Cell = .FindNext(Cell) '查找下一个Loop Until Cell.Address = strAddressRng.Interior.ColorIndex = Me.颜色.Text '标记背景颜色Me.标记.Caption = "总共找到了" & Rng.Count & "个" '写入找到多少个End WithEnd 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




