操作工作簿/工作表常用的30段VBA基础代码
原创 兔兔excel 兔兔vba 2024-04-14 00:02 广东
1、打开工作簿
Workbooks.Open "C:\文件路径\文件名.xlsx"
2. 关闭工作簿
ActiveWorkbook.Close SaveChanges:=False
3. 保存工作簿
ActiveWorkbook.Save
4. 另存为工作簿
ActiveWorkbook.SaveAs "C:\文件路径\新文件名.xlsx"
5. 新建工作簿
Workbooks.Add
6. 新建工作表
Sheets.Add After:=ActiveSheet
7. 删除工作表
Application.DisplayAlerts = False
Sheets("工作表名称").Delete
Application.DisplayAlerts = True
8. 重命名工作表
Sheets("旧工作表名称").Name = "新工作表名称"
9. 复制工作表
Sheets("源工作表名称").Copy After:=Sheets("目标工作表名称")
10. 移动工作表
Sheets("工作表名称").Move Before:=Sheets("目标工作表名称")
11. 激活工作表
Sheets("工作表名称").Activate
12. 选择工作表
Sheets("工作表名称").Select
13. 获取当前工作表名称
Dim sheetName As String
sheetName = ActiveSheet.Name
14. 获取工作簿中所有工作表的数量
Dim sheetCount As Integer
sheetCount = ThisWorkbook.Sheets.Count
15. 获取工作簿中所有工作表的名称
Dim sheetNames() As String
Dim i As Integer
ReDim sheetNames(1 To ThisWorkbook.Sheets.Count)
For i = 1 To ThisWorkbook.Sheets.Count
sheetNames(i) = ThisWorkbook.Sheets(i).Name
Next i
16. 获取指定单元格的值
Dim cellValue As Variant
cellValue = Range("A1").Value
17. 设置指定单元格的值
Range("A1").Value = "Hello, World!"
18. 获取指定单元格的行号和列号
Dim rowNum As Long, colNum As Long
rowNum = Range("A1").Row
colNum = Range("A1").Column
19. 获取指定单元格的地址
Dim cellAddress As String
cellAddress = Range("A1").Address
20. 获取指定单元格的公式
Dim cellFormula As String
cellFormula = Range("A1").Formula
21. 设置指定单元格的公式
Range("A1").Formula = "=SUM(B1:B10)"
22. 清除指定单元格的内容
Range("A1").ClearContents
23. 清除指定单元格的格式和内容
Range("A1").Clear
24. 复制指定单元格的内容到剪贴板
Range("A1").Copy
25. 从剪贴板粘贴内容到指定单元格
Range("A1").PasteSpecial Paste:=xlPasteAll
26. 设置指定单元格的背景色
Range("A1").Interior.Color = RGB(255, 0, 0)
27. 设置指定单元格的字体颜色
Range("A1").Font.Color = RGB(255, 255, 255)
28. 设置指定单元格的字体大小
Range("A1").Font.Size = 14
29. 设置指定单元格的字体加粗
Range("A1").Font.Bold = True
30. 设置指定单元格的字体斜体
Range("A1").Font.Italic = True
顶级对象application非常基础的23段vba代码
ication.Workbooks("工作簿名称").Visible = xlHidden
Application.Workbooks("工作簿名称").Visible = xlVisible
8. 设置活动工作簿
Application.ActiveWorkbook
9. 切换工作表
Application.Workbooks("工作簿名称").Sheets("工作表名称").Activate
10. 创建新的工作表
Application.Sheets.Add After:=Application.Sheets(Application.Sheets.Count)
16. 设置单元格格式
Application.Range("A1").NumberFormat = "0.00"
18. 数据排序
Application.Range("A1:B10").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes
19. 筛选数据
Application.Range("A1:B10").AutoFilter
20. 查找和替换
Application.WorksheetFunction.Lookup _
LookIn:=xlValues, _
LookAt:=xlWhole, _
Key1:=1, _
Value:=2, _
Array:=Range("A1:B10")
21. 设置字体
Application.Range("A1").Font.Name = "Arial"
22. 设置单元格边框
Application.Range("A1").Borders.Weight = xlThin
23. 设置背景色
Application.Range("A1").Interior.Color = RGB(255, 255,0)
一、数据处理
1、删除重复行
Sub DeleteDuplicates()
Range("A1:B100").RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo
End Sub
2、将数字格式化为货币
Sub FormatCurrency()
Range("A1:A10").NumberFormat = "$#,##0.00"
End Sub
3、转换列中的文本为大写
Sub ConvertToUpperCase()
Range("A1:A10").Value = Application.WorksheetFunction.Upper(Range("A1:A10").Value)
End Sub
7、查找并替换文本
Sub FindAndReplace()
Cells.Replace What:="OldText", Replacement:="NewText", LookAt:=xlPart, MatchCase:=False
End Sub
8、查找特定值并高亮显示
Sub HighlightValue()
Dim cell As Range
For Each cell In Range("A1:A10")
If cell.Value = "Target" Then
cell.Interior.Color = RGB(255, 255, 0) ' 黄色
End If
Next cell
End Sub
16、创建超链接
Sub CreateHyperlink()
ActiveSheet.Hyperlinks.Add Anchor:=Cells(1, 1), Address:="https://www.example.com", TextToDisplay:="Visit Example"
End Sub
vba核心对象range的40段基础代码
1. 选择特定单元格
Range("A1").Select
2. 读取单元格值
MsgBox Range("A1").Value
3. 设置单元格值
Range("A1").Value = 100
4. 合并单元格
Range("A1:B2").Merge
5. 取消合并单元格
Range("A1").UnMerge
6. 设置单元格背景色
Range("A1").Interior.Color = RGB(255, 0, 0)
7. 设置字体颜色
Range("A1").Font.Color = RGB(0, 0, 255)
8. 设置字体大小
Range("A1").Font.Size = 12
9. 设置加粗
Range("A1").Font.Bold = True
10. 设置斜体
Range("A1").Font.Italic = True
11. 设置下划线
Range("A1").Font.Underline = True
12. 设置边框样式
Range("A1").Borders.LineStyle = xlContinuous
13. 设置水平对齐
Range("A1").HorizontalAlignment = xlCenter
14. 设置垂直对齐
Range("A1").VerticalAlignment = xlTop
15. 插入行
Rows(1).Insert
16. 删除行
Rows(1).Delete
17. 隐藏行
Rows(1).Hidden = True
18. 显示行
Rows(1).Hidden = False
19. 复制单元格
Range("A1").Copy Destination:=Range("B1")
20. 清除内容
Range("A1").ClearContents
21. 自动筛选
Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:=">100"
22. 排序数据
Range("A1").CurrentRegion.Sort Key1:=Range("B1"), Order1:=xlAscending
23. 查找特定值的单元格
Set foundCell = Range("A1:A10").Find(What:=25, LookIn:=xlValues)
24. 应用条件格式
Range("A1:A10").FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="100"
25. 创建数据验证
With Range("A1").Validation
26. 设置打印区域
ActiveSheet.PageSetup.PrintArea = Range("A1:D10").Address
27. 插入单元格
Range("A1").Offset(1, 0).Resize(RowSize:=2).Insert Shift:=xlDown
28. 删除单元格
Range("A2:A3").Delete Shift:=xlUp
29. 调整行高
Range("A1").RowHeight = 50
30. 调整列宽
Range("A1").ColumnWidth = 15
31. 复制格式
Range("A1").Copy Destination:=Range("B1")
32. 粘贴特殊格式
Range("B1").PasteSpecial Paste:=xlPasteFormats
33. 添加超链接
Range("A1").Hyperlinks.Add Anchor:=Range("A1"), Address:="http://www.example.com", TextToDisplay:="点击访问"
34. 批量清除公式保留值
Range("A1:B10").Value = Range("A1:B10").Value
35. 保护/解锁工作表中的单元格
ActiveSheet.Protect Password:="password"
36. 遍历形状并操作
For Each shp In ActiveSheet.Shapes ... Next shp
37. 批量替换公式中的文本
Range("A1:B10").Replace What:="old_text", Replacement:="new_text", LookAt:=xlPart, SearchOrder:=xlByRows
38. 批量转换数值格式
Range("A1:A10").NumberFormat = "0.00%"
39. 批量应用文本格式
Range("A1:A10").Font.Name = "Arial"
40. 批量设置条件格式规则
Range("A1:A10").FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(A1,2)=0"
关于“新建”的8段基础vba代码
1. 新建一个工作簿:
Workbooks.Add
2. 新建一个工作表:
Sheets.Add
3. 新建一个工作表并命名为“新工作表”:
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "新工作表"
4. 新建一个工作表并将其移动到第一个位置:
Sheets.Add Before:=Sheets(1)
5. 新建一个工作表并将其复制到指定位置:
Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)
6. 新建一个工作表并将其复制到指定位置并重命名:
Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "新工作表"
7. 新建一个工作表并将其复制到指定位置并删除原工作表:
Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)
Sheets("Sheet1").Delete
8. 新建一个工作表并将其复制到指定位置并删除原工作表并重命名:
Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)
Sheets("Sheet1").Delete
ActiveSheet.Name = "新工作表"
常用的字符串操作函数
Len - 获取字符串长度
Dim strLength As StringstrLength = Len("Hello") '5
LenB - 获取字符串所占字节
Byte 1个字节,Boolean 2个字节,Integer 2个字节,Long 4个字节,Single 4个字节,Double 8个字节,Decimal 14个字节,Date 8个字节,Object 4个字节,String 每个字符占用两个字节
Dim strLength As StringstrLength = Len("Hello") '10
Left、Right 和 Mid - 获取字符串的左/右/中部分
leftPart = Left("Hello", 3) 'HelrightPart = Right("Hello", 2) 'l0midPart = Mid("Hello", 2) 'el
Ucase 和 Lcase - 转换为大写或小写
upperStr = Ucase("hello") ' HELLOlowerStr = Lcase("HELLO") 'hello
Trim - 去除字符串前后的空格
Trim(" Hello ") 'Hello
LTrim - 去除字符串左侧的空格
RTrim - 去除字符串右侧的空格
Space - 返回由指定数量的空格组成的字符串
Space(5) '" "
InStr - 查找子字符串在字符串中首次出现的位置
第一个参数表示起始查找位置,如果position=0,说明没找到
str = "Hello World World"position = InStr(1, str, "World") '7position = InStr(8, str, "World") '13position = InStr(1, str, "Worldj") '0
InStrRev - 查找子字符串在字符串中最后一次出现的位置
Dim str As String str = "Hello World World" InStrRev(str, "World") '13
Asc - 返回字符串中第一个字符的ASCII值
Asc("A") '65Asc("a") '97Asc("1") '49
Chr - 返回指定ASCII值的字符
Chr(65) 'AChr(97) 'aChr(49) '1
Replace - 替换字符串中的部分内容
Replace("Hello World", "World", "VBA") 'Hello VBA
Date 和 Now - 获取当前日期和时间
MsgBox "今天是:" & Date & ",现在是:" & Now
Year, Month, Day - 从日期中提取年、月、日
Dim currentDate As Date currentDate = Date MsgBox "年份是:" & Year(currentDate) & ",月份是:" & Month(currentDate) & ",日期是:" & Day(currentDate)
Round - 四舍五入数字
Dim roundedNum As DoubleroundedNum = Round(3.14159, 2) '3.14
Int 和 Fix - 取整
Dim intNum As Integer
Dim fixNum As Double
intNum = Int(3.14) '3
fixNum = Fix(3.14) '3
intNum = Int(-3.14) '-4
fixNum = Fix(-3.14) '-3
Abs - 取绝对值
Dim absNum As Double
absNum = Abs(-5.5) '5.5
Split - 将字符串按指定分隔符拆分为数组
Dim strArray() As String
strArray = Split("Apple,Banana,Cherry", ",")
MsgBox "第一个水果是:" & strArray(0) 'Apple
Join - 将数组的元素连接成一个字符串
Dim fruitArray() As Variant
fruitArray = Array("Apple", "Banana", "Cherry")
Dim joinedStr As String
joinedStr = Join(fruitArray, ", ")
MsgBox "所有水果:" & joinedStr
IsNumeric - 检查是否为数字
Dim isNum As Boolean
isNum = IsNumeric(123) 'true
isNum = IsNumeric("123") 'false
IsEmpty - 检查是否为空
Dim isEmptyVar As Variant
IsEmpty(isEmptyVar) 'true
isEmptyVar = ""I
sEmpty(isEmptyVar) 'false
IIf - 条件判断并返回
TestMe = 500
IIf(TestMe > 1000, "Large", "Small") 'Small
Rnd - 生成随机数
Rnd(1) '生成[0,1)的随机数,包含0、不包含1'如果要生成[m,n)的随机数
Rnd(1) *(n-m)+mRnd(1)*(100-60)+60 '生成[60,100)的随机数
Rnd()生成的是伪随机数,多次执行得到的是相同的随机序列,建议加一句Randomize,可以得到不同随机数
RandomizeRnd(1)