'excel文件和工作簿
'excel文件就是excel工作簿,excel文件打开需要excel程的支持
'Workbooks 工作簿集合,泛指excel文件或工作簿
'1. 令文件A的第1个sheet中单元格A1等于100
Sub t1()
Workbooks("A.xls").Sheets(1).Range("a1") = 100 'Workbooks("A.xls"),名称为A的excel工作簿
End Sub
'1. 令第二个工作簿的第2个sheet中单元格A1等于200
Sub t2()
Workbooks(2).Sheets(2).Range("a1") = 200 'workbooks(2),按打开顺序,第二个打开的工作簿
End Sub
'ActiveWorkbook :当打开多个excel工作簿时,你正在操作的那个就是ActiveWorkbook(活动工作簿)
'Thisworkbook:VBA程序所在的工作簿,无论你打开多少个工作簿,无论当前是哪个工作簿是活动的,thisworkbook就是指它所在的工作簿
'工作簿窗口
'Windows("A.xls"),A工作簿的窗口,使用windows可以设置工作簿窗口的状态,如是否隐藏等。
'1. 隐藏工作簿A
Sub t3()
Windows("A.xls").Visible = False
End Sub
'2. 取消隐藏第二个sheet
Sub t4()
Sheets(2).Visible = True
End Sub
'3. 判断A.Xls文件是否存在
Sub W1()
If Len(Dir("d:/A.xls")) = 0 Then
MsgBox "A文件不存在"
Else
MsgBox "A文件存在"
End If
End Sub
'4. 判断A.Xls文件是否打开
Sub W2()
Dim X As Integer
For X = 1 To Windows.Count
If Windows(X).Caption = "A.XLS" Then
MsgBox "A文件打开了"
Exit Sub
End If
Next
End Sub
'5. excel文件新建和保存
Sub W3()
Dim wb As Workbook
Set wb = Workbooks.Add
wb.Sheets("sheet1").Range("a1") = "abcd"
wb.SaveAs "D:/B.xls"
End Sub
'6. excel文件打开和关闭
Sub w4()
Dim wb As Workbook
Set wb = Workbooks.Open("D:/B.xls")
MsgBox wb.Sheets("sheet1").Range("a1").Value
wb.Close False '关闭工作簿且不保存
End Sub
'7. excel文件保存和备份
Sub w5()
Dim wb As Workbook
Set wb = ThisWorkbook
wb.Save
wb.SaveCopyAs "D:/ABC.xls"
End Sub
'8. excel工作表的移动
Sub s4()
Sheets("Sheet2").Move before:=Sheets("sheet1") 'sheet2移动到sheet1前面
Sheets("Sheet1").Move after:=Sheets(Sheets.Count) 'sheet1移动到所有工作表的最后面
End Sub
'9. excel文件复制
Sub s5() '在本工作簿中
Dim sh As Worksheet
Sheets("模板").Copy before:=Sheets(1)
Set sh = ActiveSheet
sh.Name = "1日"
sh.Range("a1") = "测试"
End Sub
Sub s6() '另存为新工作簿
Dim wb As Workbook
Sheets("模板").Copy
Set wb = ActiveWorkbook
wb.SaveAs ThisWorkbook.Path & "/1日.xls"
wb.Sheets(1).Range("b1") = "测试"
wb.Close True '关闭且保存
End Sub
'10. 工作表删除
Sub s9()
Application.DisplayAlerts = False '不显示删除时提示的提示框
Sheets("模板").Delete
Application.DisplayAlerts = True
End Sub
'11. 工作表的选取
Sub s10()
Sheets("sheet2").Select
End Sub
'12. 保护工作表
Sub s7()
Sheets("sheet2").Protect "123"
End Sub
Sub s8() '判断工作表是否添加了保护密码
If Sheets("sheet2").ProtectContents = True Then
MsgBox "工作簿保护了"
Else
MsgBox "工作簿没有添加保护"
End If
End Sub
'单元格选取
'1. 表示一个单元格(a1)
Sub s()
'Range("a1").Select '方法1
'Cells(1, 1).Select '方法2
'Range("A" & 1).Select '方法3
'Cells(1, "A").Select '方法4
'Cells(1).Select '方法5
[a1].Select '方法6
End Sub
'2. 表示相邻单元格区域
Sub d() '选取单元格a1:c5
'Range("a1:c5").Select
'Range("A1", "C5").Select
'Range(Cells(1, 1), Cells(5, 3)).Select
'Range("a1:a10").Offset(0, 1).Select
Range("a1").Resize(5, 3).Select '以A1为起点的总行数和总列数
End Sub
'3. 表示不相邻的单元格区域
Sub d1()
Range("a1,c1:f4,a7").Select
'Union(Range("a1"), Range("c1:f4"), Range("a7")).Select '选取多个单元格
End Sub
Sub dd() 'union示例
Dim rg As Range, x As Integer
For x = 2 To 10 Step 2
If x = 2 Then Set rg = Cells(x, 1)
Set rg = Union(rg, Cells(x, 1))
Next x
rg.Select
End Sub
'4. 表示行
Sub h()
'Rows(1).Select
'Rows("3:7").Select '第3到7行
'Range("1:2,4:5").Select '第1到2行和4到5行,即选取不连续的行
Range("c4:f5").EntireRow.Select '选取单元格C4:F5所在的行
End Sub
'5. 表示列
Sub L()
'Columns(1).Select
'Columns("A:B").Select
'Range("A:B,D:E").Select
Range("c4:f5").EntireColumn.Select '选取c4:f5所在的列
End Sub
'6. 重置坐标,新坐标系以B2为起点
Sub cc()
Range("b2").Range("a1") = 100
End Sub
'7. 将正在选取的单元格区域内容改为100
Sub d2()
Selection.Value = 100
End Sub
'特殊单元格定位
'1. 选取sheet2已使用的单元格区域
Sub d1()
Sheets("sheet2").UsedRange.Select
'wb.Sheets(1).Range("a1:a10").Copy Range("i1")
End Sub
'2. 选取B8所在的已使用的单元格区域
Sub d2()
Range("b8").CurrentRegion.Select
End Sub
'3. 两个单元格区域共同的区域
Sub d3()
Intersect(Columns("b:c"), Rows("3:5")).Select
End Sub
'4. 调用定位条件选取特殊单元格
Sub d4()
Range("A1:A6").SpecialCells(xlCellTypeBlanks).Select '选取空单元格
End Sub
'5. 端点单元格
Sub d5()
Range("a65536").End(xlUp).Offset(1, 0) = 1000 '类似于Ctrl+向上键
End Sub
Sub d6()
Range(Range("b6"), Range("b6").End(xlToRight)).Select
End Sub
'单元格信息
'1. 单元格的值
Sub x1()
Range("b10") = Range("c2").Value
Range("b11") = Range("c2").Text
Range("c10") = "'" & Range("b2").Formula 'Formula表示返回的是公式
End Sub
'2. 单元格的地址
Sub x2()
With Range("b2").CurrentRegion
[b12] = .Address '绝对地址
[c12] = .Address(0, 0) '相对地址
[d12] = .Address(1, 0) '列相对,行绝对
[e12] = .Address(0, 1) '行相对,列绝对
[f12] = .Address(1, 1) '绝对地址,两个1可省略
End With
End Sub
'3. 单元格的行列信息
Sub x3()
With Range("b2").CurrentRegion
[b13] = .Row
[b14] = .Rows.Count '单元格区域的总行数
[b15] = .Column
[b16] = .Columns.Count
[b17] = .Range("a1").Address
End With
End Sub
'4. 单元格的格式信息
Sub x4()
With Range("b2")
[b19] = .Font.Size
[b20] = .Font.ColorIndex
[b21] = .Interior.ColorIndex
[b22] = .Borders.LineStyle
End With
End Sub
'5. 单元格批注信息
Sub x5()
[B24] = Range("I2").Comment.Text
End Sub
'6. 单元格的位置信息
Sub x6()
With Range("b2")
[b26] = .Top
[b27] = .Left
[b28] = .Height
[b29] = .Width
End With
End Sub
'7. 单元格的上级信息
Sub x7()
With Range("b2")
[b31] = .Parent.Name '所在工作表名称
[b32] = .Parent.Parent.Name '所在工作表的所在工作簿名称
End With
End Sub
'8. 内容判断
Sub x8()
With Range("b2")
[b34] = .HasFormula '是否有公式
[b35] = .Hyperlinks.Count '超链接个数
End With
End Sub
'单元格格式
'1. Excel中的颜色可以用两种方式获取,一种是EXCEL内置颜色,另一种是利用QBCOLOR函数返回
Sub y1()
Dim x As Integer
Range("a1:b60").Clear
For x = 1 To 56
Range("a" & x) = x
Range("b" & x).Font.ColorIndex = 3
Next x
End Sub
Sub y2()
Dim x As Integer
For x = 0 To 15
Range("d" & x + 1) = x
Range("e" & x + 1).Interior.Color = QBColor(x)
Next x
End Sub
Sub y3()
Dim 红 As Integer, 绿 As Integer, 蓝 As Integer
红 = 255
绿 = 123
蓝 = 100
Range("g1").Interior.Color = RGB(红, 绿, 蓝)
End Sub
'2. 判断数值的格式
'2.1 判断是否为空单元格
Sub d1()
[b1] = ""
'If Range("a1") = "" Then
'If Len([a1]) = 0 Then
If VBA.IsEmpty([a1]) Then
[b1] = "空值"
End If
End Sub
'2.2 判断是否为数字
Sub d2()
[b2] = ""
'If VBA.IsNumeric([a2]) And [a2] <> "" Then
If Application.WorksheetFunction.IsNumber([a2]) Then
[b2] = "数字"
End If
End Sub
'2.3 判断是否为文本
Sub d3()
[b3] = ""
'If Application.WorksheetFunction.IsText([A3]) Then
If VBA.TypeName([a3].Value) = "String" Then
[b3] = "文本"
End If
End Sub
'2.4 判断是否为汉字
Sub d4()
[b4] = ""
If [a4] > "z" Then
[b4] = "汉字"
End If
End Sub
'2.5 判断错误值
Sub d10()
[b5] = ""
'If VBA.IsError([a5]) Then
If Application.WorksheetFunction.IsError([a5]) Then
[b5] = "错误值"
End If
End Sub
Sub d11()
[b6] = ""
If VBA.IsDate([a6]) Then
[b6] = "日期"
End If
End Sub
'3. 设置单元格自定义格式
Sub d30()
Range("d1:d8").NumberFormatLocal = "0.00"
End Sub
'4. 按指定格式从单元格返回数值
'Format函数语法(和工作表数Text用法基本一致)
'Format(数值,自定义格式代码)
'5. 单元格合并
Sub h1()
Range("g1:h3").Merge
End Sub
'5.1. 合并区域的返回信息
Sub h2()
Range("e1") = Range("b3").MergeArea.Address '返回单元格所在的合并单元格区域
End Sub
'5.2. 判断是否含合并单元格
Sub h3()
'MsgBox Range("b2").MergeCells
' MsgBox Range("A1:D7").MergeCells
Range("e2") = IsNull(Range("a1:d7").MergeCells)
Range("e3") = IsNull(Range("a9:d72").MergeCells)
End Sub
'5.3. 综合示例
'合并H列相同单元格
Sub h4()
Dim x As Integer
Dim rg As Range
Set rg = Range("h1")
Application.DisplayAlerts = False
For x = 1 To 13
If Range("h" & x + 1) = Range("h" & x) Then
Set rg = Union(rg, Range("h" & x + 1))
Else
rg.Merge
Set rg = Range("h" & x + 1)
End If
Next x
Application.DisplayAlerts = True
End Sub
'单元格编辑
'1. 单元格输入
Sub t1()
Range("a1") = "a" & "b"
Range("b1") = "a" & Chr(10) & "b" '换行答输入
End Sub
'2. 单元格复制和剪切
Sub t2()
Range("a1:a10").Copy Range("c1") 'A1:A10的内容复制到C1
End Sub
Sub t3()
Range("a1:a10").Copy
ActiveSheet.Paste Range("d1") '粘贴至D1
End Sub
Sub t4()
Range("a1:a10").Copy
Range("e1").PasteSpecial (xlPasteValues) '只粘贴为数值
End Sub
Sub t5()
Range("a1:a10").Cut
ActiveSheet.Paste Range("f1") '粘贴到f1
End Sub
Sub t6()
Range("c1:c10").Copy
Range("a1:a10").PasteSpecial Operation:=xlAdd '选择粘贴-加
End Sub
Sub T7()
Range("G1:G10") = Range("A1:A10").Value
End Sub
'3. 填充公式
Sub T8()
Range("b1") = "=a1*10"
Range("b1:b10").FillDown '向下填充公式
End Sub
'4.插入行
Sub c1()
Rows(4).Insert '插入行,原单元格下移
End Sub
Sub c2() '插入行并复制公式
Rows(4).Insert
Range("3:4").FillDown
Range("4:4").SpecialCells(xlCellTypeConstants) = ""
End Sub
Sub c3() '不同值之间插入空行
Dim x As Integer
For x = 2 To 20
If Cells(x, 3) <> Cells(x + 1, 3) Then
Rows(x + 1).Insert
x = x + 1
End If
Next x
End Sub
Sub c4() '分类汇总
Dim x As Integer, m1 As Integer, m2 As Integer
Dim k As Integer
m1 = 2
For x = 2 To 1000
If Cells(x, 1) = "" Then Exit Sub
If Cells(x, 3) <> Cells(x + 1, 3) Then
m2 = x
Rows(x + 1).Insert
Cells(x + 1, "c") = Cells(x, "c") & " 小计"
Cells(x + 1, "h") = "=sum(h" & m1 & ":h" & m2 & ")"
Cells(x + 1, "h").Resize(1, 4).FillRight
Cells(x + 1, "i") = " "
x = x + 1
m1 = m2 + 2
End If
Next x
End Sub
Sub c44() '个人方法
Dim x As Integer
Dim t As Integer
t = Range("c65536").End(xlUp).Row
For x = t To 2 Step -1
If Cells(x, 3) <> Cells(x - 1, 3) Then
Rows(x).Insert
Cells(Cells(x, "C").Offset(1, 0).End(xlDown).Row + 1, "C") = Cells(Cells(x, "C").Offset(1, 0).End(xlDown).Row, "C") & " 小计"
Cells(Cells(x, "H").Offset(1, 0).End(xlDown).Row + 1, "H") = _
Application.Sum(Range(Cells(x, "h").Offset(1, 0), Cells(x, "H").Offset(1, 0).End(xlDown)))
End If
Next x
End Sub
Sub dd() '批量删除空行
Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
'excel文件就是excel工作簿,excel文件打开需要excel程的支持
'Workbooks 工作簿集合,泛指excel文件或工作簿
'1. 令文件A的第1个sheet中单元格A1等于100
Sub t1()
Workbooks("A.xls").Sheets(1).Range("a1") = 100 'Workbooks("A.xls"),名称为A的excel工作簿
End Sub
'1. 令第二个工作簿的第2个sheet中单元格A1等于200
Sub t2()
Workbooks(2).Sheets(2).Range("a1") = 200 'workbooks(2),按打开顺序,第二个打开的工作簿
End Sub
'ActiveWorkbook :当打开多个excel工作簿时,你正在操作的那个就是ActiveWorkbook(活动工作簿)
'Thisworkbook:VBA程序所在的工作簿,无论你打开多少个工作簿,无论当前是哪个工作簿是活动的,thisworkbook就是指它所在的工作簿
'工作簿窗口
'Windows("A.xls"),A工作簿的窗口,使用windows可以设置工作簿窗口的状态,如是否隐藏等。
'1. 隐藏工作簿A
Sub t3()
Windows("A.xls").Visible = False
End Sub
'2. 取消隐藏第二个sheet
Sub t4()
Sheets(2).Visible = True
End Sub
'3. 判断A.Xls文件是否存在
Sub W1()
If Len(Dir("d:/A.xls")) = 0 Then
MsgBox "A文件不存在"
Else
MsgBox "A文件存在"
End If
End Sub
'4. 判断A.Xls文件是否打开
Sub W2()
Dim X As Integer
For X = 1 To Windows.Count
If Windows(X).Caption = "A.XLS" Then
MsgBox "A文件打开了"
Exit Sub
End If
Next
End Sub
'5. excel文件新建和保存
Sub W3()
Dim wb As Workbook
Set wb = Workbooks.Add
wb.Sheets("sheet1").Range("a1") = "abcd"
wb.SaveAs "D:/B.xls"
End Sub
'6. excel文件打开和关闭
Sub w4()
Dim wb As Workbook
Set wb = Workbooks.Open("D:/B.xls")
MsgBox wb.Sheets("sheet1").Range("a1").Value
wb.Close False '关闭工作簿且不保存
End Sub
'7. excel文件保存和备份
Sub w5()
Dim wb As Workbook
Set wb = ThisWorkbook
wb.Save
wb.SaveCopyAs "D:/ABC.xls"
End Sub
'8. excel工作表的移动
Sub s4()
Sheets("Sheet2").Move before:=Sheets("sheet1") 'sheet2移动到sheet1前面
Sheets("Sheet1").Move after:=Sheets(Sheets.Count) 'sheet1移动到所有工作表的最后面
End Sub
'9. excel文件复制
Sub s5() '在本工作簿中
Dim sh As Worksheet
Sheets("模板").Copy before:=Sheets(1)
Set sh = ActiveSheet
sh.Name = "1日"
sh.Range("a1") = "测试"
End Sub
Sub s6() '另存为新工作簿
Dim wb As Workbook
Sheets("模板").Copy
Set wb = ActiveWorkbook
wb.SaveAs ThisWorkbook.Path & "/1日.xls"
wb.Sheets(1).Range("b1") = "测试"
wb.Close True '关闭且保存
End Sub
'10. 工作表删除
Sub s9()
Application.DisplayAlerts = False '不显示删除时提示的提示框
Sheets("模板").Delete
Application.DisplayAlerts = True
End Sub
'11. 工作表的选取
Sub s10()
Sheets("sheet2").Select
End Sub
'12. 保护工作表
Sub s7()
Sheets("sheet2").Protect "123"
End Sub
Sub s8() '判断工作表是否添加了保护密码
If Sheets("sheet2").ProtectContents = True Then
MsgBox "工作簿保护了"
Else
MsgBox "工作簿没有添加保护"
End If
End Sub
'单元格选取
'1. 表示一个单元格(a1)
Sub s()
'Range("a1").Select '方法1
'Cells(1, 1).Select '方法2
'Range("A" & 1).Select '方法3
'Cells(1, "A").Select '方法4
'Cells(1).Select '方法5
[a1].Select '方法6
End Sub
'2. 表示相邻单元格区域
Sub d() '选取单元格a1:c5
'Range("a1:c5").Select
'Range("A1", "C5").Select
'Range(Cells(1, 1), Cells(5, 3)).Select
'Range("a1:a10").Offset(0, 1).Select
Range("a1").Resize(5, 3).Select '以A1为起点的总行数和总列数
End Sub
'3. 表示不相邻的单元格区域
Sub d1()
Range("a1,c1:f4,a7").Select
'Union(Range("a1"), Range("c1:f4"), Range("a7")).Select '选取多个单元格
End Sub
Sub dd() 'union示例
Dim rg As Range, x As Integer
For x = 2 To 10 Step 2
If x = 2 Then Set rg = Cells(x, 1)
Set rg = Union(rg, Cells(x, 1))
Next x
rg.Select
End Sub
'4. 表示行
Sub h()
'Rows(1).Select
'Rows("3:7").Select '第3到7行
'Range("1:2,4:5").Select '第1到2行和4到5行,即选取不连续的行
Range("c4:f5").EntireRow.Select '选取单元格C4:F5所在的行
End Sub
'5. 表示列
Sub L()
'Columns(1).Select
'Columns("A:B").Select
'Range("A:B,D:E").Select
Range("c4:f5").EntireColumn.Select '选取c4:f5所在的列
End Sub
'6. 重置坐标,新坐标系以B2为起点
Sub cc()
Range("b2").Range("a1") = 100
End Sub
'7. 将正在选取的单元格区域内容改为100
Sub d2()
Selection.Value = 100
End Sub
'特殊单元格定位
'1. 选取sheet2已使用的单元格区域
Sub d1()
Sheets("sheet2").UsedRange.Select
'wb.Sheets(1).Range("a1:a10").Copy Range("i1")
End Sub
'2. 选取B8所在的已使用的单元格区域
Sub d2()
Range("b8").CurrentRegion.Select
End Sub
'3. 两个单元格区域共同的区域
Sub d3()
Intersect(Columns("b:c"), Rows("3:5")).Select
End Sub
'4. 调用定位条件选取特殊单元格
Sub d4()
Range("A1:A6").SpecialCells(xlCellTypeBlanks).Select '选取空单元格
End Sub
'5. 端点单元格
Sub d5()
Range("a65536").End(xlUp).Offset(1, 0) = 1000 '类似于Ctrl+向上键
End Sub
Sub d6()
Range(Range("b6"), Range("b6").End(xlToRight)).Select
End Sub
'单元格信息
'1. 单元格的值
Sub x1()
Range("b10") = Range("c2").Value
Range("b11") = Range("c2").Text
Range("c10") = "'" & Range("b2").Formula 'Formula表示返回的是公式
End Sub
'2. 单元格的地址
Sub x2()
With Range("b2").CurrentRegion
[b12] = .Address '绝对地址
[c12] = .Address(0, 0) '相对地址
[d12] = .Address(1, 0) '列相对,行绝对
[e12] = .Address(0, 1) '行相对,列绝对
[f12] = .Address(1, 1) '绝对地址,两个1可省略
End With
End Sub
'3. 单元格的行列信息
Sub x3()
With Range("b2").CurrentRegion
[b13] = .Row
[b14] = .Rows.Count '单元格区域的总行数
[b15] = .Column
[b16] = .Columns.Count
[b17] = .Range("a1").Address
End With
End Sub
'4. 单元格的格式信息
Sub x4()
With Range("b2")
[b19] = .Font.Size
[b20] = .Font.ColorIndex
[b21] = .Interior.ColorIndex
[b22] = .Borders.LineStyle
End With
End Sub
'5. 单元格批注信息
Sub x5()
[B24] = Range("I2").Comment.Text
End Sub
'6. 单元格的位置信息
Sub x6()
With Range("b2")
[b26] = .Top
[b27] = .Left
[b28] = .Height
[b29] = .Width
End With
End Sub
'7. 单元格的上级信息
Sub x7()
With Range("b2")
[b31] = .Parent.Name '所在工作表名称
[b32] = .Parent.Parent.Name '所在工作表的所在工作簿名称
End With
End Sub
'8. 内容判断
Sub x8()
With Range("b2")
[b34] = .HasFormula '是否有公式
[b35] = .Hyperlinks.Count '超链接个数
End With
End Sub
'单元格格式
'1. Excel中的颜色可以用两种方式获取,一种是EXCEL内置颜色,另一种是利用QBCOLOR函数返回
Sub y1()
Dim x As Integer
Range("a1:b60").Clear
For x = 1 To 56
Range("a" & x) = x
Range("b" & x).Font.ColorIndex = 3
Next x
End Sub
Sub y2()
Dim x As Integer
For x = 0 To 15
Range("d" & x + 1) = x
Range("e" & x + 1).Interior.Color = QBColor(x)
Next x
End Sub
Sub y3()
Dim 红 As Integer, 绿 As Integer, 蓝 As Integer
红 = 255
绿 = 123
蓝 = 100
Range("g1").Interior.Color = RGB(红, 绿, 蓝)
End Sub
'2. 判断数值的格式
'2.1 判断是否为空单元格
Sub d1()
[b1] = ""
'If Range("a1") = "" Then
'If Len([a1]) = 0 Then
If VBA.IsEmpty([a1]) Then
[b1] = "空值"
End If
End Sub
'2.2 判断是否为数字
Sub d2()
[b2] = ""
'If VBA.IsNumeric([a2]) And [a2] <> "" Then
If Application.WorksheetFunction.IsNumber([a2]) Then
[b2] = "数字"
End If
End Sub
'2.3 判断是否为文本
Sub d3()
[b3] = ""
'If Application.WorksheetFunction.IsText([A3]) Then
If VBA.TypeName([a3].Value) = "String" Then
[b3] = "文本"
End If
End Sub
'2.4 判断是否为汉字
Sub d4()
[b4] = ""
If [a4] > "z" Then
[b4] = "汉字"
End If
End Sub
'2.5 判断错误值
Sub d10()
[b5] = ""
'If VBA.IsError([a5]) Then
If Application.WorksheetFunction.IsError([a5]) Then
[b5] = "错误值"
End If
End Sub
Sub d11()
[b6] = ""
If VBA.IsDate([a6]) Then
[b6] = "日期"
End If
End Sub
'3. 设置单元格自定义格式
Sub d30()
Range("d1:d8").NumberFormatLocal = "0.00"
End Sub
'4. 按指定格式从单元格返回数值
'Format函数语法(和工作表数Text用法基本一致)
'Format(数值,自定义格式代码)
'5. 单元格合并
Sub h1()
Range("g1:h3").Merge
End Sub
'5.1. 合并区域的返回信息
Sub h2()
Range("e1") = Range("b3").MergeArea.Address '返回单元格所在的合并单元格区域
End Sub
'5.2. 判断是否含合并单元格
Sub h3()
'MsgBox Range("b2").MergeCells
' MsgBox Range("A1:D7").MergeCells
Range("e2") = IsNull(Range("a1:d7").MergeCells)
Range("e3") = IsNull(Range("a9:d72").MergeCells)
End Sub
'5.3. 综合示例
'合并H列相同单元格
Sub h4()
Dim x As Integer
Dim rg As Range
Set rg = Range("h1")
Application.DisplayAlerts = False
For x = 1 To 13
If Range("h" & x + 1) = Range("h" & x) Then
Set rg = Union(rg, Range("h" & x + 1))
Else
rg.Merge
Set rg = Range("h" & x + 1)
End If
Next x
Application.DisplayAlerts = True
End Sub
'单元格编辑
'1. 单元格输入
Sub t1()
Range("a1") = "a" & "b"
Range("b1") = "a" & Chr(10) & "b" '换行答输入
End Sub
'2. 单元格复制和剪切
Sub t2()
Range("a1:a10").Copy Range("c1") 'A1:A10的内容复制到C1
End Sub
Sub t3()
Range("a1:a10").Copy
ActiveSheet.Paste Range("d1") '粘贴至D1
End Sub
Sub t4()
Range("a1:a10").Copy
Range("e1").PasteSpecial (xlPasteValues) '只粘贴为数值
End Sub
Sub t5()
Range("a1:a10").Cut
ActiveSheet.Paste Range("f1") '粘贴到f1
End Sub
Sub t6()
Range("c1:c10").Copy
Range("a1:a10").PasteSpecial Operation:=xlAdd '选择粘贴-加
End Sub
Sub T7()
Range("G1:G10") = Range("A1:A10").Value
End Sub
'3. 填充公式
Sub T8()
Range("b1") = "=a1*10"
Range("b1:b10").FillDown '向下填充公式
End Sub
'4.插入行
Sub c1()
Rows(4).Insert '插入行,原单元格下移
End Sub
Sub c2() '插入行并复制公式
Rows(4).Insert
Range("3:4").FillDown
Range("4:4").SpecialCells(xlCellTypeConstants) = ""
End Sub
Sub c3() '不同值之间插入空行
Dim x As Integer
For x = 2 To 20
If Cells(x, 3) <> Cells(x + 1, 3) Then
Rows(x + 1).Insert
x = x + 1
End If
Next x
End Sub
Sub c4() '分类汇总
Dim x As Integer, m1 As Integer, m2 As Integer
Dim k As Integer
m1 = 2
For x = 2 To 1000
If Cells(x, 1) = "" Then Exit Sub
If Cells(x, 3) <> Cells(x + 1, 3) Then
m2 = x
Rows(x + 1).Insert
Cells(x + 1, "c") = Cells(x, "c") & " 小计"
Cells(x + 1, "h") = "=sum(h" & m1 & ":h" & m2 & ")"
Cells(x + 1, "h").Resize(1, 4).FillRight
Cells(x + 1, "i") = " "
x = x + 1
m1 = m2 + 2
End If
Next x
End Sub
Sub c44() '个人方法
Dim x As Integer
Dim t As Integer
t = Range("c65536").End(xlUp).Row
For x = t To 2 Step -1
If Cells(x, 3) <> Cells(x - 1, 3) Then
Rows(x).Insert
Cells(Cells(x, "C").Offset(1, 0).End(xlDown).Row + 1, "C") = Cells(Cells(x, "C").Offset(1, 0).End(xlDown).Row, "C") & " 小计"
Cells(Cells(x, "H").Offset(1, 0).End(xlDown).Row + 1, "H") = _
Application.Sum(Range(Cells(x, "h").Offset(1, 0), Cells(x, "H").Offset(1, 0).End(xlDown)))
End If
Next x
End Sub
Sub dd() '批量删除空行
Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete