1. vba中if函数
If [A1] Like "*上海*" Then [A2] = "上海" ElseIf [A1] Like "*北京*" Then [A2] = "北京" Else Range("A2").Clear End If
2. vba的if
If Left((Cells(i, col)), 2) = 13 Or Left((Cells(i, col)), 2) = 15 Or Left((Cells(i, col)), 2) = 18 Then
改成这样试试:
If Left((Cells(i, col)), 2) = "13" Or Left((Cells(i, col)), 2) = "15" Or Left((Cells(i, col)), 2) = "18" Then
因为left函数取出来的13、15或者18都是字符串,不能直接=13,而是要="13"
3. vba中if函数的语法
定义
在指定区域查找特定信息,查找到第一个值停止查找
表达式
Range.Find(What,[After],[LookIn],[LookAt],[SearchOrder],[SearchDirection],[MatchCase],[MatchByte],[SearchFormat]);
<单元格区域>.Find (要查找的数据,开始查找的位置,查找的范围类型,完全匹配还是部分匹配,行列方式查找,向前向后查找,区分大小写,全角或半角,查找格式)。
参数
名称:What 必选 Variant 要搜索的数据,可为任意数据类型,可使用通配符
名称:After 可选 Variant after必须是区域中的某个单元格,搜索是从after之后开始的,直到方法绕回此单元格时候,才对此单元格进行搜索.如果不指定参数,搜索从区域左上角开始搜索
名称:LookIn 可选 Variant 查找范围,对应[查找与替换]中[查找范围]下拉选项,xlVlues按值查找,xlFormulas按公式查找,xlComments按批注查找
名称:LookAt 可选 Variant 完全匹配还是部分匹配,xlWhole,xlPart
名称:SearchOrder 可选 Variant 按行查找还是按列查找,xlByRows按行查找,xlByColumuns按列查找
名称:SearchaDirection 可选 Variant 搜索的方向,xlNext正向查找,xlPrevious反向查找
MatchCase 可选 Variant True为区分大小写,默认值为False
MatchByte 可选 Variant 只在双字节语言使用,True双字节只与双字节字符匹配;False双字节字符可以对等的单字节字符匹配,是否区分全/半角
SearchFormat 可选 Variant 搜索的格式,true为必须指定的单元格格式,false表示查找的结果可以是任意格式(使用该参数时,必须先行指定格式,Application.FindFormat.属性)
Sub test1()
'
Dim r As Range
Dim s As String
s = "Hello"
Dim a As Range
'查找第一个内容含有vba的单元格
'Set r = Worksheets(1).Cells.Find("vba")
'查找第一个内容精确为vba的单元格
'Set r = Worksheets(1).Cells.Find(what:="vba", lookat:=xlWhole)
'查找第一个包含大写字母"VBA",且单元格为红色的的单元格
'Application.FindFormat.Interior.Color = vbRed
'Set r = Worksheets(1).Cells.Find(what:=s,lookat:=xlPart, MatchCase:=True, Searchformat:=True)
'找到第一个内容为“GWb”的单元格,并且大小写精确匹配。
Set r = Range("I13")
Do
Set r = Worksheets(1).Cells.Find(what:=s, after:=r, lookat:=xlPart, MatchCase:=False, Searchformat:=False, LookIn:=xlValues)
r.Interior.Color = vbBlue
' Set r = Worksheets(1).Cells.Find(what:=s, after:=a, lookat:=xlPart, MatchCase:=True, Searchformat:=False, LookIn:=xlFormulas)
MsgBox (r.Address())
If r.Address = "$I$13" Then Exit Do
Loop While Not r Is Nothing
MsgBox (r.Address())
End Sub
4. vba中if函数循环
1. VBA 局部变量和全局变量
2. VBA 变量赋值
3. VBA 选中一个Sheet
4. VBA 获取单元格内容
5. VBA 获取单元格行号和列号
6. VBA 单元格赋值
7. VBA Range获取单元区间
For Each cellVal In ThisWorkbook.Sheets(1).Range(startColName & rowNum & ":" & endColName & rowNum)
'cellVal即单元格的内容
'cellVal.Column 列号
'cellVal.Row 行号
Next
8. VBA 使用Find搜索单元格内容
在使用Find的时候经常会遇到两个问题: 1. VBA Find搜索失败,抛出异常 使用VBA中Find搜索内容,当搜索失败时,会抛出异常导致程序无法正常处理 解决方法如下,使用Rng存储,然后用If Not Rng Is Nothing Then判断。
Set Rng = ThisWorkbook.Sheets(1).Range(colName & firstRow & ":" & colName & lastRow).Find(styleColor)
If Not Rng Is Nothing Then
’可以找到(这里处理)
End If
Find循环破除 使用VBA中Find搜索内容,会出现循环搜索的问题,此时,可以使用判断是否回到第一次作为判断,断开循环。
Set Rng = ThisWorkbook.Sheets(1).Range(colName & firstRow & ":" & colName & lastRow).Find(styleColor)
If Not Rng Is Nothing Then
rowNum = Rng.Row
firstMatchRow = rowNum
While rowNum
' 这里写处理逻辑
' 继续搜索单店指定店铺
Set Rng = ThisWorkbook.Sheets(1).Range(colStyleColor & firstRow & ":" & colStyleColor & lastRow).Find(styleColor, after:=Range(colStyleColor & rowNum))
If Not Rng Is Nothing Then
rowNum = Rng.Row
End If
' 如果搜索回到第一个,退出函数 '
If firstMatchRow = rowNum Then
rowNum = fasle
End If
Wend
End If
9. VBA While循环退出循环
While i < 100
'这里处理逻辑 '
If i = 20 Then
i = 100 '利用While的破坏条件退出循环 '
End if
Wend
10. VBA 字典类型使用
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
If dic.exists(key) = False Then
dic.Add key, val
End If
' 循环读取字典内容 '
For Each key In dic
val = dic.Item(key)
Next
' 移除一个内容 '
dic.Remove(key)
' 移除全部内容 '
dic.RemoveAll
11. VBA For 循环
For i = 1 To 10
MsgBox i
Next i
12. VBA 获取最大行号
13. VBA If ElseIf
Name = "vba"
If Name = "vba" Then
MsgBox "Yes"
ElseIf Name = "xxx" Then
MsgBox "No"
Else
MsgBox "X"
End If
14. VBA 函数定义
' 1~num求和 '
Function getSum(num)
Sum = 0
For i = 1 To num
Sum = Sum + i
Next i
' 返回值为函数同名变量赋值 '
getSum = Sum
End Function
15. VBA 函数返回值
VBA中的字典无法作为返回值,此时需要借助全局变量传递返回值
Public tmpDic As Object
Function test()
Set tmpDic = CreateObject("Scripting.Dictionary")
tmpDic.Add "a", 5
End Function
16. VBA 退出Sub或Function
使用exit sub或exit function即可
17. VBA 注释
VBA使用单引号作为注释
18. 复制Sheet
19. 添加Sheet
Worksheets.Add().Name = "Sheet xxx"
5. vba中if函数写法
IfCells(i,1)<>""ThenCells(i,6)=Int(Cells(i,5)*Cells(i,4))EndIf
6. vba中if语句
这个其实很容易做,只要用if语句判断第2行是否有数据即可,至于自动编号,可以通过函数取编号开始处至需要自动编号的前一行的最大值然后加1即可实现。
- 相关评论
- 我要评论
-