Excel常见宏(简洁版)
更新时间:2024-05-29 17:09:01 阅读量: 综合文库 文档下载
- Excel美观简洁推荐度:
- 相关推荐
清除剪贴板
Sub 清除剪贴板()
Application.CutCopyMode = False
Application.CommandBars(\End Sub
批量清除软回车
Sub 批量清除软回车()
'也可直接使用Alt+10或13替换
Cells.Replace What:=Chr(10), Replacement:=\ xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False End Sub
判断指定文件是否已经打开
Sub 判断指定文件是否已经打开() Dim x As Integer
For x = 1 To Workbooks.Count
If Workbooks(x).Name = \函数.xls\ '文件名称 MsgBox \文件已打开\ Exit Sub End If Next
MsgBox \文件未打开\End Sub
当前文件另存到指定目录
Sub 当前激活文件另存到指定目录()
ActiveWorkbook.SaveAs Filename:=\信件\\\End Sub
另存指定文件名
Sub 另存指定文件名()
ActiveWorkbook.SaveAs ThisWorkbook.Path & \别名.xls\End Sub
以本工作表名称另存文件到当前目录
Sub 以本工作表名称另存文件到当前目录()
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & \End Sub
将本工作表单独另存文件到Excel当前默认目录
Sub 将本工作表单独另存文件到Excel当前默认目录() ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=ActiveSheet.Name & \End Sub
以活动工作表名称另存文件到Excel当前默认目录
Sub 以活动工作表名称另存文件到Excel当前默认目录()
ActiveWorkbook.SaveAs Filename:=ActiveSheet.Name & \
xlNormal, Password:=\ , CreateBackup:=False End Sub
另存所有工作表为工作簿
Sub 另存所有工作表为工作簿() Dim sht As Worksheet
Application.ScreenUpdating = False ipath = ThisWorkbook.Path & \For Each sht In Sheets sht.Copy
ActiveWorkbook.SaveAs ipath & sht.Name & \工作表名称为文件名)
'ActiveWorkbook.SaveAs ipath & sht.Name & Trim(sht.[d15]) & \(文件名称 & D15单元内容)
'ActiveWorkbook.SaveAs ipath & Trim(sht.[d15]) & \ '(文件名称为D15单元内容) ActiveWorkbook.Close Next
Application.ScreenUpdating = True End Sub
以指定单元内容为新文件名另存文件
Sub 以指定单元内容为新文件名另存文件()
ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & \End Sub
以当前日期为新文件名另存文件
Sub 以当前日期为新文件名另存文件()
ThisWorkbook.SaveAs ThisWorkbook.Path & \End Sub
Sub 以当前日期为名称另存文件()
ActiveWorkbook.SaveAs Filename:=Date & \ End Sub
以当前日期和时间为新文件名另存文件
Sub 以当前日期和时间为新文件名另存文件()
ThisWorkbook.SaveAs ThisWorkbook.Path & \年\月\日\时\分\秒\End Sub
另存本表为TXT文件
Sub 另存本表为TXT文件() Dim s As String
Dim FullName As String, rng As Range Application.ScreenUpdating = False
FullName = (ActiveSheet.Name & \ '以当前表名为TXT文件名
' FullName = Replace(ThisWorkbook.FullName, \ '以当前文件名为TXT文件名 ' FullName = Replace(ThisWorkbook.FullName, \'以文件名&表名为TXT文件名
Open FullName For Output As #1 '以读写方式打开文件,每次写内容都会覆盖原先的内容
'参考帮助,fullname为文件全名
For Each rng In Range(\ s = s & IIf(s = \|\
If rng.Column = Range(\ Print #1, s & \|\'把数据写到文本文件里 s = \ End If Next
Close #1 '关闭文件
Application.ScreenUpdating = True MsgBox \数据已导入文本\ End Sub
引用指定位置单元内容为部分文件名另存文件
Sub 引用指定位置单元内容为部分文件名另存文件()
ActiveWorkbook.SaveAs Filename:=\信件\\\解答\郎雀.xls\End Sub
将A列数据排序到D列
Sub 将A列数据排序到D列() [d:d] = [a:a].Value
[d:d].Sort Key1:=Range(\
End Sub
将指定范围的数据排列到D列
Sub 将指定范围的数据排列到D列() Dim arr1, arr2, i%, x arr1 = Range(\
ReDim arr2(1 To UBound(arr1, 1) * UBound(arr1, 2), 1 To 1) For Each x In Application.Transpose(arr1) i = i + 1 arr2(i, 1) = x Next x
Range(\End Sub 光标移动
Sub 光标移动()
ActiveCell.Offset(1, 2).Select '向下移动1行,向右移动2列 End Sub
光标所在行上移一行
Sub 光标所在行上移一行() Dim i%
i = Split(ActiveCell.Address, \ If i > 1 Then Rows(i).Cut
Rows(i - 1).Insert Shift:=xlDown End If End Sub
加数据有效限制
Sub 加数据有效限制()
With Selection.Validation .Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=\bigsun010@sina.com\ .IgnoreBlank = False .InCellDropdown = False .InputTitle = \ .ErrorTitle = \ .InputMessage = \
.ErrorMessage = \要奋斗就会有牺牲,死人的事是经常发生的。\ .IMEMode = xlIMEModeNoControl .ShowInput = True .ShowError = True End With End Sub
取消数据有效限制
Sub 取消数据有效限制() With Selection.Validation .Delete
.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _ :=xlBetween
.IgnoreBlank = False .InCellDropdown = False .InputTitle = \ .ErrorTitle = \ .InputMessage = \ .ErrorMessage = \
.IMEMode = xlIMEModeNoControl .ShowInput = True
.ShowError = True End With End Sub 重排窗口
Sub 重排窗口()
Application.CommandBars(\
Application.CommandBars(\我的工具\ Windows.Arrange ArrangeStyle:=xlCascade End Sub
按当前单元文本选择打开指定文件单元 Sub 选择打开文件单元() Dim a
a = ActiveCell.Value
Range(a).Worksheet.Activate Range(a).Select End Sub
回车光标向右
Sub 录入光标向右()
Application.MoveAfterReturnDirection = xlToRight End Sub
回车光标向下
Sub 录入光标向下()
Application.MoveAfterReturnDirection = xlDown End Sub
保护工作表时取消选定锁定单元 Sub 取消选定锁定单元()
ActiveSheet.EnableSelection = xlUnlockedCells '用于2000版 End Sub
保存并退出Excel
Sub 保存并退出Excel()
Application.SendKeys (\ActiveWorkbook.Save End Sub
隐藏/显示指定列空值行 Sub 隐藏显示E列空值行()
Range(\(Range(\ End Sub
深度隐藏指定工作表
Sub 深度隐藏指定工作表()
Sheets(\用户名密码\End Sub
隐藏指定工作表
Sub 隐藏指定工作表()
Sheets(\用户名密码\End Sub
隐藏当前工作表
Sub 隐藏当前工作表()
ActiveWindow.SelectedSheets.Visible = false End Sub
返回当前工作表名称
Sub 返回当前工作表名称() wsName = ActiveSheet.Name
MsgBox \当前工作表为:\
End Sub
获取上一次所进入工作簿的工作表名称
Sub 获取上一次所进入工作簿的工作表名称() MsgBox Workbooks(2).ActiveSheet.Name End Sub
按光标选定颜色隐藏本列其他颜色行
Sub 按颜色筛选() '思路就是:其它背景色之行全部隐藏
Dim UseRow, AC, i '首先选择一个有颜色之单元格,然后动行宏,其它颜色所在行隐藏 UseRow = Cells.SpecialCells(xlCellTypeLastCell).Row 'SpecialCells(xlCellTypeLastCell)表示已用区域最后一个单元格
If ActiveCell.Row > UseRow Then
MsgBox \请在要筛选的区域选择一个有颜色之单元格!\错误\Else
AC = ActiveCell.Column
Cells.EntireRow.Hidden = False '显示所有行 For i = 2 To UseRow
If Cells(i, AC).Interior.ColorIndex <> ActiveCell.Interior.ColorIndex Then
Cells(i, AC).EntireRow.Hidden = True '如果2至已用行之单元格的有列之颜色不等于当前单元格颜色则隐藏整行 End If Next End If End Sub
打开工作簿自动隐藏录入表以外的其他表 Private Sub Workbook_Open() Dim i
For i = 1 To Sheets.Count
If Sheets(i).Name <> \录入\Sheets(i).Visible = False End If Next End Sub
除最左边工作表外深度隐藏所有表
Sub 除最左边工作表外深度隐藏所有表() For i = 2 To ThisWorkbook.Sheets.Count Sheets(i).Visible = xlSheetVeryHidden Next End Sub
关闭文件时自动隐藏指定工作表(ThisWorkbook) Private Sub Workbook_BeforeClose(Cancel As Boolean) ActiveWorkbook.Unprotect
Sheets(\ Sheets(\
ActiveWorkbook.Protect Structure:=True, Windows:=False End Sub
打开文件时提示指定工作表是保护状态(ThisWorkbook) Private Sub Workbook_Open()
If Worksheets(\ MsgBox \保护了.\End If End Sub 插入10行
Sub 插入10行()
Rows(ActiveCell.Row & \ Selection.Insert Shift:=xlDown
End Sub 需求说明:
'复制当前工作簿的“报表”工作表到“临时”工作簿为“001”表。
'如果“临时”工作簿未打开,就创建新工作簿为“临时”并在其中加入“001”表; '如果“临时”工作簿已经打开,就直接加入“001”表。
'如果打开的“临时”工作簿中已经有“001”表,就报错退出。 '帖子地址:
http://club.excelhome.net/dispbbs.asp?boardid=2&replyid=875804&id=245219&page=1&skin=0&Star=2
删除指定文件
Sub 删除指定文件() Kill \信件\\1.xls\End Sub
合并A1至C1的内容写到D15单元的批注中
?http://club.excelhome.net/dispbbs.asp?boardid=2&id=251887 northwolves版主 Sub 将A1至C1的内容写到D15单元的批注中() [iv1:iv12] = \
[d15].AddComment Join(Application.Transpose([iv1:iv12]), vbCrLf) [iv1:iv12] = \
[d15].Comment.Visible = True
[d15].Comment.Shape.Height = 100 End Sub 自动重算
Sub 自动重算()
With Application
.Calculation = xlAutomatic End With End Sub 手动重算
Sub 手动重算()
With Application
.Calculation = xlManual End With End Sub
调整选中对象中的文字
Sub 调整选中对象中的文字() '文字居中、自动调整大小 With Selection
.HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .ReadingOrder = xlContext .Orientation = xlHorizontal .AutoSize = True .AddIndent = False End With End Sub
去除指定范围内的对象
Sub 去除指定范围内的对象() Dim p As Shape
Set My = Worksheets(\工作表名\ For Each p In My.Shapes
If Not Application.Intersect(p.TopLeftCell, Range(\范围\ Next End Sub
更新透视表数据项
Sub DeleteMissingItems2002All()
'防止数据透视表中显示无用的数据项 '在 Excel 2002 或更高版本中 '如果无用的数据项已经存在, '运行这个宏可以更新 Dim pt As PivotTable Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets For Each pt In ws.PivotTables
pt.PivotCache.MissingItemsLimit = xlMissingItemsNone Next pt Next ws
End Sub
将全部工作表名称写到A列 Sub 将全部表名称写到A列() k = 1
For Each Sht In Sheets
Cells(k + 1, 1) = Sht.Name '指定写入的行和列 k = k + 1 Next End Sub
为当前选定的多单元插入指定名称
Sub 为当前选定的多单元插入指定名称() Selection.Name = \临时\
ActiveWorkbook.Names.Add Name:=\临时\可以 End Sub
删除全部名称
Sub 删除全部名称() On Error Resume Next Dim l As Integer
l = ActiveWorkbook.Names.Count For i = l To 1 Step -1
ActiveWorkbook.Names(i).Delete Next End Sub
以指定区域为表目录补充新表
Sub 以指定区域为表目录补充新表() Dim dic As Object, sh As Worksheet Dim arr, item
arr = Range(\
Set dic = CreateObject(\ For Each sh In ThisWorkbook.Worksheets dic.Add sh.Name, \ Next
For Each item In arr
If item <> \ With ThisWorkbook.Worksheets.Add .Name = item End With End If Next
Set dic = Nothing End Sub
'或者换用这行代码也 按A列数据批量修改表名称
Sub 按A列数据批量修改表名称() Dim i%
For i = 1 To Sheets.Count - 1
Sheets(i).Name = Cells(i + 1, 1).Text Next End Sub
按A列数据批量创建新表(控件按钮代码) Private Sub CommandButton1_Click() On Error Resume Next Dim i%, j%
For i = 1 To [a65536].End(xlUp).Row For j = 2 To Sheets.Count
If Cells(i, 1) = Sheets(j).Name Then Exit For End If Next
Sheets.Add(after:=Sheets(Sheets.Count)).Name = Cells(i, 1) Next End Sub
指定单元显示光标位置内容(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal T As Range) Sheets(1).Range(\End Sub
每编辑一个单元保存文件
Private Sub Worksheet_Change(ByVal Target As Range) ThisWorkbook.Save End Sub
指定允许编辑区域
Sub 指定允许编辑区域()
ActiveSheet.ScrollArea = \End Sub
解除允许编辑区域限制
Sub 解除允许编辑区域限制() ActiveSheet.ScrollArea = \End Sub 删除指定行
Sub 删除指定行()
Workbooks(\临时表\表2\End Sub
删除A列为指定内容的行
Sub 删除A列为指定内容的行() Dim a, b As Integer
a = Sheet1.[a65536].End(xlUp).Row For b = a To 2 Step -1
If Cells(b, 1).Value = \删除\ Rows(b).Delete End If Next End Sub
删除A列非数字单元行
Sub 删除A列非数字单元行() i = [a65536].End(xlUp).Row
Range(\End Sub
有条件删除当前行
Sub 有条件删除当前行()
If [A1] = 2 Or [B1] = \删除\Selection.Delete Shift:=xlUp End If End Sub 选择下一行
Sub 选择下一行()
ActiveCell.Offset(1, 0).Rows(\End Sub
选择第5行开始所有数据行
Sub 选择第5行开始所有数据行A() Dim i%
i = Cells.Find(\SearchDirection:=xlPrevious).EntireRow.Row Rows(\ End Sub
Sub 选择第5行开始所有数据行B()
Rows(\ End Sub
选择光标或选区所在行
Sub 选择光标或选区所在行() Selection.EntireRow.Select End Sub
选择光标或选区所在列
Sub 选择光标或选区所在列() Selection.EntireColumn.Select End Sub
光标定位到名称指定位置 Sub 定位()
Application.Goto Range(Evaluate(\名称\) End Sub
选择名称定义的数据区
Sub 选择名称定义的数据区()
[数据区].Select '插入名称要使用INDIRECT函数 'Range(\数据区\ 或者 'Sheet1.Range(\数据区\或者 End Sub
选择到指定列的最后行
Sub 选择到指定列的最后行()
Range(\End Sub
将Sheet1的A列的非空值写到Sheet2的A列
Sub 将Sheet1的A列的非空值写到Sheet2的A列()
Sheet1.Columns(\End Sub
将名称1的数据写到名称2 Sub Macro2()
Range(\位置2\位置1\End Sub 单元反选
Sub 单元反选()
Application.DisplayAlerts = False Application.ScreenUpdating = False
Dim raddress As String, taddress As String raddress = Selection.Address
taddress = ActiveSheet.UsedRange.Address With Sheets.Add .Range(taddress) = 0 .Range(raddress) = \
raddress = .Range(taddress).SpecialCells(xlCellTypeConstants, 1).Address .Delete End With
ActiveSheet.Range(raddress).Select Application.ScreenUpdating = True End Sub
指定区域单元双击数据累加(工作表代码)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Application.Intersect([A1:Y100], Target) Is Nothing Then oldvalue = Val(Target.Value)
inputvalue = InputBox(\请输入数量,按ENTER键确认!\数值累加器\Target.Value = oldvalue + inputvalue End If End Sub
选择单元区域触发事件(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = \ MsgBox \你选择了$A$1:$B$2单元\End If End Sub
当修改指定单元内容时自动执行宏(工作表代码) Private Sub Worksheet_Change(ByVal Target As Range) If Not Application.Intersect(Target, [B3:B4]) Is Nothing Then 重排窗口 End If End Sub
被指定单元内容限制执行宏 Sub 被指定单元限制执行宏()
If Range(\关闭\窗口 End Sub
双击单元隐藏该行(工作表代码)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Rows(Target.Row).Hidden = True End Sub
高亮显示行(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cells.Interior.ColorIndex = 2
Rows(\ '保持1至2行的颜色推荐39,22,40,
Rows(Target.Row).Interior.ColorIndex = 35 '高亮推荐颜色35,20,24,34,37,40,15 End Sub
高亮显示行和列(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cells.Interior.ColorIndex = xlNone
Rows(Target.Row).Interior.ColorIndex = 34
Columns(Target.Column).Interior.ColorIndex = 34 End Sub
为指定工作表设置滚动范围(工作簿代码)
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Sheet1.ScrollArea = \End Sub
在指定单元记录打印和预览次数(工作簿代码) Private Sub Workbook_BeforePrint(Cancel As Boolean) Range(\ End Sub
自动数字金额转大写(工作表代码)
Private Sub Worksheet_Change(ByVal M As Range) On Error Resume Next
y = Int(Round(100 * Abs(M)) / 100)
j = Round(100 * Abs(M) + 0.00001) - y * 100 f = (j / 10 - Int(j / 10)) * 10
A = IIf(y < 1, \元\
b = IIf(j > 9.5, Application.Text(Int(j / 10), \角\零\\
c = IIf(f < 1, \整\分\ M = IIf(Abs(M) < 0.005, \负\End Sub
将全部工作表的A1单元作为单击按钮(工作簿代码)
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = \ Call 宏名 End If End Sub
闹钟——到指定时间执行宏(工作簿代码) Private Sub Workbook_Open()
Application.OnTime (\提示1\ '宏名字 Application.OnTime (\提示2\ '宏名字 End Sub
改变Excel界面标题的宏(工作簿代码) Private Sub Workbook_Open() Application.Caption = \春节快乐\End Sub
在指定工作表的指定单元返回光标当前多选区地址(工作簿代码)
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Worksheets(\表2\End Sub
B列录入数据时在A列返回记录时间(工作表代码) Public Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then Target.Offset(, -1) = Now End If End Sub
当指定区域修改时在其右侧的2个单元返回当前日期和时间(工作表代码) Public Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, [A1:A1000]) Is Nothing Then If Target.Column = 1 Then Target.Offset(, 1) = Date Target.Offset(, 2) = Time End If End If End Sub
Public Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, [A1:A1000]) Is Nothing Then If Target.Column = 1 Then
Target.Offset(, 1) = Format(Now(), \ Target.Offset(, 2) = Format(Now(), \ End If End If End Sub
A列等于A列减B列
Sub A列等于A列减B列() For i = 1 To 23
Cells(i, 1) = Cells(i, 1) - Cells(i, 2) Next End Sub
用于光标选定多区域跳转指定单元(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal T As Range) a = Array([b6:b7], [e6], [h6]) For i = 0 To 2
If Not Application.Intersect(T, a(i)) Is Nothing Then [a1].Select: Exit For End If Next End Sub
将A1单元录入的数据累加到B1单元(工作表代码) Private Sub Worksheet_Change(ByVal Target As Range) Dim t As Long
If Target.Address = \t = Sheet1.Range(\
Sheet1.Range(\End If End Sub
在指定颜色区域选择单元时添加/取消\(工作表代码) Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim myrg As Range For Each myrg In Target
If myrg.Interior.ColorIndex = 37 Then myrg = IIf(myrg <> \ Next End Sub
在指定区域选择单元时添加/取消\(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Rng As Range
If Target.Count <= 15 Then
If Not Application.Intersect(Target, Range(\ For Each Rng In Selection With Rng
If .Value = \ .Value = \ Else
.Value = \ End If End With Next End If End If End Sub
双击指定单元,循环录入文本(工作表代码)
Private Sub Worksheet_BeforeDoubleClick(ByVal T As Range, Cancel As Boolean) If T.Address <> \$A$1\ Cancel = True
T = IIf(T = \好\中\中\差\好\ End Sub
双击指定单元,循环录入文本(工作表代码) Dim nums As Byte
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = \$A$1\ nums = nums Mod 3 + 1
Target = Mid(\上中下\ Target.Offset(1, 0).Select End If End Sub
单元区域引用(工作表代码) Private Sub Worksheet_Activate()
Sheet1.Range(\End Sub
在指定区域选择单元时数值加1(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Application.Intersect([a1:e10], Target) Is Nothing Then Target = Val(Target) + 1 End If End Sub
混合文本的编号
Sub 混合文本的编号()
Worksheets(1).Range(\北京\End Sub
光标定位到指定工作表A列最后数据行下一单元
Sub 光标定位到指定工作表A列最后数据行下一单元() a = Sheets(\数据库\ Sheets(\数据库\ Range(\End Sub
定位选定单元格式相同的全部单元格
Sub 定位选定单元格式相同的全部单元格() Dim FirstCell As Range, FoundCell As Range Dim AllCells As Range
With Application.FindFormat .Clear
.NumberFormatLocal = Selection.NumberFormatLocal .HorizontalAlignment = Selection.HorizontalAlignment .VerticalAlignment = Selection.VerticalAlignment .WrapText = Selection.WrapText .Orientation = Selection.Orientation .AddIndent = Selection.AddIndent .IndentLevel = Selection.IndentLevel .ShrinkToFit = Selection.ShrinkToFit .MergeCells = Selection.MergeCells .Font.Name = Selection.Font.Name
.Font.FontStyle = Selection.Font.FontStyle .Font.Size = Selection.Font.Size
.Font.Strikethrough = Selection.Font.Strikethrough .Font.Subscript = Selection.Font.Subscript .Font.Underline = Selection.Font.Underline .Font.ColorIndex = Selection.Font.ColorIndex
.Interior.ColorIndex = Selection.Interior.ColorIndex .Interior.Pattern = Selection.Interior.Pattern .Locked = Selection.Locked
.FormulaHidden = Selection.FormulaHidden End With
Set FirstCell = ActiveSheet.UsedRange.Find(what:=\ If FirstCell Is Nothing Then Exit Sub End If
Set AllCells = FirstCell Set FoundCell = FirstCell Do
Set FoundCell = ActiveSheet.UsedRange.Find(After:=FoundCell, what:=\searchformat:=True)
If FoundCell Is Nothing Then Exit Do Set AllCells = Union(FoundCell, AllCells)
If FoundCell.Address = FirstCell.Address Then Exit Do Loop AllCells.Select End Sub
按当前单元文本定位
Sub 按当前单元文本定位() ABC = Selection Dim aa As Range
For Each a In ActiveSheet.UsedRange If a Like ABC Then If aa Is Nothing Then Set aa = a.Cells Else
Set aa = Union(aa, a.Cells) End If End If Next aa.Select End Sub
按固定文本定位 Sub 文本定位() Dim aa As Range
For Each a In ActiveSheet.UsedRange If a Like \合计*\If aa Is Nothing Then Set aa = a.Cells Else
Set aa = Union(aa, a.Cells) End If End If Next aa.Select End Sub
删除包含固定文本单元的行或列
Sub 删除包含固定文本单元的行或列() Do
Cells.Find(what:=\哈哈\
Selection.EntireRow.Delete '删除行 ' Selection.EntireColumn.Delete '删除列
Loop Until Cells.Find(what:=\哈哈\End Sub
定位数据及区域以上的空值
Sub 定位数据及区域以上的空值() Dim aa As Range
For Each a In ActiveSheet.UsedRange If a Like 〈0 Then If aa Is Nothing Then Set aa = a.Cells Else
Set aa = Union(aa, a.Cells) End If End If Next aa.Select End Sub
右侧单元自动加5(工作表代码)
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Target.Offset(0, 1) = Target + 5 Application.EnableEvents = True End Sub
当前单元加2
Sub 当前单元加2()
Selection = Selection + 2
'Selection = Workbooks(\临时表\表2\调用指定地址内容 End Sub
解除全部工作表保护
Sub 解除全部工作表保护() Dim n As Integer
For n = 1 To Sheets.Count Sheets(n).Unprotect Next n End Sub
为指定工作表加指定密码保护表
Sub 为指定工作表加指定密码保护表() Sheet10.Protect Password:=\End Sub
在有密码的工作表执行代码
Sub 在有密码的工作表执行代码()
Sheets(\假定表名为“1”,密码为“123” 打开工作表
Range(\ '隐藏C列空值行 Sheets(\ '重新用密码保护工作表 End Sub
执行前需要验证密码的宏(控件按钮代码) Private Sub CommandButton1_Click()
If InputBox(\请输入密码:\密码是123 MsgBox \密码错误,按确定退出!\提示\ Exit Sub End If
Cells(1, 1) = 10 End Sub
Sub 执行前需要验证密码的宏()
If InputBox(\请输入您的使用权限:\系统提示\ 重排窗口 '要执行的宏代码或宏名称 Else
MsgBox \对不起,您没有使用该宏的权限,按确定键后退出!\ End If End Sub
拷贝A1公式和格式到A2 Sub 拷贝A1公式到A2()
Workbooks(\临时表\表1\
Workbooks(\临时表\表2\End Sub
复制单元数值 Sub 复制数值()
s = Workbooks(\ Workbooks(\End Sub
插入数值条件格式
Sub 插入数值条件格式()
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _ Formula1:=\
Selection.FormatConditions(1).Interior.ColorIndex = 45
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _ Formula1:=\
Selection.FormatConditions(2).Interior.ColorIndex = 39
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _ Formula1:=\
Selection.FormatConditions(3).Interior.ColorIndex = 34 End Sub
插入透明批注
Sub 插入透明批注()
Selection.AddComment
Selection.Comment.Visible = False Dim XS As Worksheet
For i = 1 To ActiveSheet.Comments.Count
ActiveSheet.Comments(i).Text \透明批注\
ActiveSheet.Comments(i).Shape.Fill.Visible = msoFalse Next End Sub 添加文本
Sub 添加文本()
Selection = Selection + \\不可在数字后添加文本
'Selection = Workbooks(\临时表\表2\调用指定地址内容 End Sub 工作表标签排序
Sub 工作表标签排序()
Dim i As Long, j As Long, nums As Long, msg As Long
msg = MsgBox(\工作表按升序排列请选 '是[Y]'. \工作表按降序排列请选 '否[N]'\工作表排序\If msg = vbCancel Then Exit Sub nums = Sheets.Count
If msg = vbYes Then 'Sort ascending For i = 1 To nums For j = i To nums
If UCase(Sheets(j).Name) < UCase(Sheets(i).Name) Then Sheets(j).Move Before:=Sheets(i) End If Next j
Next i
Else 'Sort descending For i = 1 To nums
For j = i To nums
If UCase(Sheets(j).Name) > UCase(Sheets(i).Name) Then Sheets(j).Move Before:=Sheets(i) End If Next j Next i End If End Sub
定义指定工作表标签颜色
Sub 定义指定工作表标签颜色() Sheets(\End Sub
在目录表建立本工作簿中各表链接目录
Sub 在目录表建立本工作簿中各表链接目录() Dim s%, Rng As Range On Error Resume Next Sheets(\目录\ If Err = 0 Then
Sheets(\目录\ Else
Sheets.Add
ActiveSheet.Name = \目录\ End If
For i = 1 To Sheets.Count
If Sheets(i).Name <> \目录\ s = s + 1
Set Rng = Sheets(\目录\ Rng = Format(s, \
ActiveSheet.Hyperlinks.Add Rng, \ScreenTip:=Sheets(i).Name End If Next
Sheets(\目录\End Sub
建立工作表文本目录
Sub 建立工作表文本目录() Sheets.Add before:=Sheets(1) Sheets(1).Name = \目录\For i = 2 To Sheets.Count
Cells(i - 1, 1) = Sheets(i).Name
'Sheets(1).Hyperlinks.Add Cells(i - 1, 1), \ '添加超链接 Next End Sub
查另一文件的全部表名
Sub 查另一文件的全部表名() On Error Resume Next Dim i%
Dim sh As Worksheet
Application.ScreenUpdating = False
Workbooks.Open Filename:=ThisWorkbook.Path & \
Windows(\1.xls\ '当前文件名称 Sheets(\Sheet1\ '当前表名称
i = 1 '将表名称返回到第1行 For Each sh In Workbooks(\
Cells(i, 1) = sh.Name '将表名称返回到第1列 i = i + 1 '返回每个表名称向下移动1行 Next sh
Windows(\ '关闭对象文件 Application.ScreenUpdating = True End Sub
当前单元录入计算机名
Sub 当前单元录入计算机名()
Selection = Environ(\
'Selection = Workbooks(\临时表\表2\调用指定地址内容 End Sub
当前单元录入计算机用户名
Sub 当前单元录入计算机用户名() Selection = Environ(\
'Selection = Workbooks(\临时表\表2\调用指定地址内容 End Sub
返回当前单元地址
Sub 返回当前单元地址() d = ActiveCell.Address [A1] = d End Sub
不连续区域录入当前日期 Sub 区域录入当前日期()
Selection.FormulaR1C1 = Format(Now(), \ End Sub
不连续区域录入当前数字日期 Sub 区域录入当前数字日期()
Selection.FormulaR1C1 = Format(Now(), \End Sub
不连续区域录入当前日期和时间 Sub 区域录入当前日期和时间()
Selection.FormulaR1C1 = Format(Now(), \ End Sub
不连续区域录入对勾 Sub 批量录入对勾()
Selection.FormulaR1C1 = \ End Sub
不连续区域录入当前文件名 Sub 批量录入当前文件名()
Selection.FormulaR1C1 = ThisWorkbook.Name End Sub
不连续区域添加文本 Sub 批量添加文本() Dim s As Range
For Each s In Selection s = s & \文本内容\Next End Sub
不连续区域插入文本 Sub 批量插入文本()
Dim s As Range
For Each s In Selection s = \文本内容\Next End Sub
从指定位置向下同时录入多单元指定内容
Sub 从指定位置向下同时录入多单元指定内容() Dim arr
arr = Array(\
[B2].Resize(8, 1) = Application.WorksheetFunction.Transpose(arr) End Sub
按aa工作表A列的内容排列工作表标签顺序
Sub 按aa工作表A列的内容排列工作表标签顺序() Dim I%, str1$ I = 1
Sheets(\
Do While Cells(I, 1).Value <> \ str1 = Trim(Cells(I, 1).Value) Sheets(str1).Select
Sheets(str1).Move after:=Sheets(I) I = I + 1
Sheets(\ Loop End Sub
以A1单元文本作表名插入工作表
Sub 以A1单元文本作表名插入工作表() Dim nm As String nm = [a1] Sheets.Add
ActiveSheet.Name = nm End Sub
删除全部未选定工作表
Sub 删除全部未选定工作表()
Dim sht As Worksheet, n As Integer, iFlag As Boolean Dim ShtName() As String
n = ActiveWindow.SelectedSheets.Count ReDim ShtName(1 To n) n = 1
For Each sht In ActiveWindow.SelectedSheets ShtName(n) = sht.Name n = n + 1 Next
Application.DisplayAlerts = False For Each sht In Sheets iFlag = False For i = 1 To n - 1
If ShtName(i) = sht.Name Then iFlag = True Exit For End If Next
If Not iFlag Then sht.Delete Next
Application.DisplayAlerts = True
End Sub
将所选区域文本插入新建文本框
Sub 将所选区域文本插入新建文本框() For Each rag In Selection n = n & rag.Value & Chr(10) Next
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, ActiveCell.Left + ActiveCell.Width, ActiveCell.Top + ActiveCell.Height, 250#, 100).Select Selection.Characters.Text = \问题:\
With Selection.Characters(Start:=1, Length:=3).Font .Name = \黑体\ .FontStyle = \常规\ .Size = 12 End With End Sub
批量插入地址批注
Sub 批量插入地址批注() On Error Resume Next Dim r As Range
If Selection.Cells.Count > 0 Then For Each r In Selection r.Comment.Delete r.AddComment
r.Comment.Visible = False
r.Comment.Text Text:=\本单元格:\Next End If End Sub
批量插入统一批注
Sub 批量插入统一批注()
Dim r As Range, msg As String
msg = InputBox(\请输入欲批量插入的批注\提示\随便输点什么吧\If Selection.Cells.Count > 0 Then For Each r In Selection r.AddComment
r.Comment.Visible = False r.Comment.Text Text:=msg Next End If End Sub
以A1单元内容批量插入批注
Sub 以A1单元内容批量插入批注() Dim r As Range
If Selection.Cells.Count > 0 Then For Each r In Selection r.AddComment
r.Comment.Visible = False
r.Comment.Text Text:=[a1].Text Next End If End Sub
不连续区域插入当前文件名和表名及地址 Sub 批量插入当前文件名和表名及地址() For Each mycell In Selection
mycell.FormulaR1C1 = \mycell.Address Next End Sub
不连续区域录入当前单元地址 Sub 区域录入当前单元地址() For Each mycell In Selection
mycell.FormulaR1C1 = mycell.Address Next End Sub
连续区域录入当前单元地址
Sub 连续区域录入当前单元地址()
Selection = \ Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub
自动打印多工作表第一页
Sub 自动打印多工作表第一页() Dim sh As Integer Dim x Dim y Dim sy Dim syz
x = InputBox(\请输入起始工作表名字:\sy = InputBox(\请输入结束工作表名字:\y = Sheets(x).Index syz = Sheets(sy).Index For sh = y To syz Sheets(sh).Select
Sheets(sh).PrintOut from:=1, To:=1 Next sh End Sub
查找A列文本循环插入分页符 Sub 循环插入分页符()
' Selection = Workbooks(\临时表\表2\调用指定地址内容 Dim i As Long
Dim times As Long
times = Application.WorksheetFunction.CountIf(Sheet1.Range(\分页\
'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647) For i = 1 To times Call 插入分页符 Next i End Sub
Sub 插入分页符()
Cells.Find(What:=\分页\
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _ .Activate
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell End Sub
Sub 取消原分页() Cells.Select
ActiveSheet.ResetAllPageBreaks End Sub
将A列最后数据行以上的所有B列图片大小调整为所在单元大小
Sub 将A列最后数据行以上的所有B列图片大小调整为所在单元大小() Dim Pic As Picture, i&
i = [A65536].End(xlUp).Row For Each Pic In Sheet1.Pictures
If Not Application.Intersect(Pic.TopLeftCell, Range(\ Pic.Top = Pic.TopLeftCell.Top Pic.Left = Pic.TopLeftCell.Left
Pic.Height = Pic.TopLeftCell.Height Pic.Width = Pic.TopLeftCell.Width End If Next End Sub
返回光标所在行数
Sub 返回光标所在行数() x = ActiveCell.Row Range(\End Sub
在A1返回当前选中单元格数量
Sub 在A1返回当前选中单元格数量() [A1] = Selection.Count End Sub
返回当前工作簿中工作表数量
Sub 返回当前工作簿中工作表数量() t = Application.Sheets.Count MsgBox t End Sub
返回光标选择区域的行数和列数
Sub 返回光标选择区域的行数和列数() x = Selection.Rows.Count y = Selection.Columns.Count Range(\Range(\End Sub
工作表中包含数据的最大行数 Sub 包含数据的最大行数() n = Cells.Find(\MsgBox n End Sub
返回A列数据的最大行数
Sub 返回A列数据的最大行数() n = Range(\Range(\End Sub
进入指定区域单元执行宏(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range(\关闭\
If Not Application.Intersect(Target, Range(\打开隐藏表 End Sub
在多个宏中依次循环执行一个(控件按钮代码) Private Sub CommandButton1_Click() Static RunMacro As Integer Select Case RunMacro Case 0 宏1
RunMacro = 1
Case 1 宏2
RunMacro = 2 Case 2 宏3
RunMacro = 0 End Select End Sub
在两个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码) Private Sub CommandButton1_Click() With CommandButton1
If .Caption = \保护工作表\ Call 保护工作表
.Caption = \取消工作表保护\ Exit Sub End If
If .Caption = \取消工作表保护\ Call 取消工作表保护
.Caption = \保护工作表\ Exit Sub End If End With End Sub
在三个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码) Option Explicit
Private Sub CommandButton1_Click() With CommandButton1
If .Caption = \宏1\ Call 宏1
.Caption = \宏2\ Exit Sub End If
If .Caption = \宏2\ Call 宏2
.Caption = \宏3\ Exit Sub End If
If .Caption = \宏3\ Call 宏3
.Caption = \宏1\ Exit Sub End If End With End Sub
根据A1单元文本隐藏/显示按钮(控件按钮代码)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range(\
CommandButton1.Visible = 1 Else
CommandButton1.Visible = 0 End If End Sub
Private Sub CommandButton1_Click() 重排窗口 End Sub
当前单元返回按钮名称(控件按钮代码) Private Sub CommandButton1_Click() ActiveCell = CommandButton1.Caption End Sub
当前单元内容返回到按钮名称(控件按钮代码) Private Sub CommandButton1_Click() CommandButton1.Caption = ActiveCell End Sub
奇偶页分别打印
Sub 奇偶页分别打印() Dim i%, Ps%
Ps = ExecuteExcel4Macro(\总页数 MsgBox \现在打印奇数页,按确定开始.\For i = 1 To Ps Step 2
ActiveSheet.PrintOut from:=i, To:=i Next i
MsgBox \现在打印偶数页,按确定开始.\For i = 2 To Ps Step 2
ActiveSheet.PrintOut from:=i, To:=i Next i End Sub
打开全部隐藏工作表
Sub 打开全部隐藏工作表() Dim i As Integer
For i = 1 To Sheets.Count Sheets(i).Visible = True Next i End Sub 循环宏 Sub 循环()
AAA = Range(\Dim i As Long Dim times As Long times = AAA
'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647) For i = 1 To times Call 过滤一行
If Range(\完成标志\完成\如果名为'完成标志'的命名单元的值等于'完成',则退出循环,如果一开始就等于'完成',则只执行一次循环就退出
'If Sheets(\传送参数\完成\ '如果某列出现\完成\内容则退出循环 Next i End Sub
录制宏时调用“停止录制”工具栏 Sub 录制宏时调用停止录制工具栏()
Application.CommandBars(\End Sub
高级筛选5列不重复数据至指定表
Sub 高级筛选5列不重复数据至Sheet2()
Sheets(\'清除Sheet2的A:D列
Range(\ \
Sheet2.Columns(\Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin End Sub
双击单元执行宏(工作表代码)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Range(\关闭\Select Case Target.Address Case \ Call 宏1 Cancel = True Case \ Call 宏2 Cancel = True Case \ Call 宏3 Cancel = True Case \
Call 宏4 Cancel = True End Select End Sub
双击指定区域单元执行宏(工作表代码)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Range(\关闭\
If Not Application.Intersect(Target, Range(\打开隐藏表
End Sub
进入单元执行宏(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) '以单元格进入代替按钮对象调用宏 If Range(\关闭\Select Case Target.Address
Case \单元地址(Target.Address),或命名单元名字(Target.Name) Call 宏1 Case \ Call 宏2 Case \ Call 宏3 End Select End Sub
正在阅读:
Excel常见宏(简洁版)05-29
基坑开挖补充协议书11-06
输送机电机功率的计算方法05-01
微格课中常出现的问题05-16
(目录)2017-2022年中国洗发护发市场发展预测及投资咨询报告 - 图文12-21
小学教师教学工作自我鉴定通用8篇03-27
《每天进步一点点》读书心得07-26
环境影响评价期中考复习04-30
完整升级版施工组织设计方案05-06
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 简洁
- 常见
- Excel
- 如何判断各种气候类型
- 计算机学院新校区值班制度
- 优势病种中医护理方案护理效果总结分析报告样稿
- 市场营销毕业论文 - 论我国服装行业营销渠道管理研究 - 图文
- 部门、班组人员配置与考核标准
- 如何将pb9数据窗口转化为pdf文件
- 《程序设计课程设计》任务书
- 奉化中学最新校友分布名单 09届至12届
- 五升六阅读理解5则
- 2019年中国机动车污染防治行业全景调研及投资前景报告(定制版)
- 大学物理第二章 习题解答
- 航空机电设备维修 - 图文
- 三相油浸式电力变压器技术参数和要求6、10KV级
- 基础会计作业
- 策划2005万宝堂连锁有限公司庆国庆营销活动企划案
- 2011年河南招警考试《行测》真题及答案解析
- 旅游概论多选题(练习册)
- 电子纳税系统软件需求说明书
- 论企业应收账款管理存在的问题与及解决办法
- 造纸设备(下册)试卷库习题