vba-条件判断标记颜色+find和findnext查询用法
Sub 双条件判断() Dim arr Dim t As Date t = #3/15/2021# 't = DateSerial(2021, 3, 15) '也可用这种标准写法 arr = Range("a2:b5") For i = 1 To UBound(arr) If arr(i, 2) = "否" And arr(i, 1) < t Then Range("a" & i + 1).Resize(1, 2).Interior.Color = RGB(Rnd() * 255, Rnd() * 255, Rnd() * 255) Else Range("a" & i + 1).Resize(1, 2).Interior.Pattern = xlNone '填充色为无色填充 End If Next End Sub
find查询 用法
Sub 单元格查找() 'Find 和findnext配合查询 'find(what,after,lookin,lookat,searchorder,searchdirection,matchcase,matchbyte,searcformat) 'what '查什么 'after '从哪开始查 range 对象 'LookIn '查什么,xlcomments(批注),xlformulas(公式),xlvalues(值) 'lookat '怎么查 xlwhole(单元格内容与what完全一样),xlpart(与what部分一样) 'searchorder '查询顺序,按行还是按列 xlbyrows(行), xlbycolumns(列) 'searchdirection '查询 方向,从上往下(xlnext)还是从下往上(xlprevious) 'MatchCase '是否区分大小写 true(区分),false(不区分) 'matchbyte '是否区域半角还是全角 true(区分),false(不区分) 'searchformat '匹配格式,查执行这个之前,需要对application.format 对象进行设置,这是一个只包含单元格格式设置的特殊对象 Dim str As String Dim rng As Range Set rng = Range("d2:d14").Find(2, lookat:=xlWhole) 'xlwhole为整体匹配,部分相同也不行 If rng Is Nothing Then MsgBox "无此值" Else str = rng.Address Do rng.Interior.Color = RGB(Rnd() * 255, Rnd() * 255, Rnd() * 255) Set rng = Range("d2:d14").FindNext(rng) Loop Until rng.Address = str 'find和findnext 是循环查找,设置查了一圈后回到原点为退出 End If End Sub