一些实用的excel宏

合集下载

excel宏命令详细讲解

excel宏命令详细讲解

excel宏命令详细讲解Excel宏命令是一种自动化操作工具,可以用来简化重复性的任务,提高工作效率。

本文将详细讲解一些较为冷门但实用的宏表函数,带你玩转宏命令。

一、自定义宏命令自定义宏命令可以根据个人的需求编写,可用于自动完成一系列复杂的操作。

以下是一个例子:Sub MyMacro'将选定的单元格背景设置为黄色Selection.Interior.Color = RGB(255, 255, 0)End Sub二、输入框函数输入框函数可以用来创建用户交互界面,用户可以在输入框中输入值,作为宏的参数。

以下是一个示例:Sub InputBoxDemoDim Value As StringValue = InputBox("请输入您的姓名:")MsgBox "欢迎您," & ValueEnd Sub三、循环函数循环函数可以重复执行一段代码。

以下是两种常用的循环函数:1. For循环For循环可以让代码块重复执行指定次数。

以下是一个示例:Sub ForLoopDemoDim i As IntegerFor i = 1 To 10Cells(i, 1).Value = iNext iEnd Sub2. Do While循环Do While循环会在条件满足时重复执行代码块。

以下是一个示例:Sub DoWhileLoopDemoDim i As Integeri=1Do While i <= 10Cells(i, 2).Value = i * 2i=i+1LoopEnd Sub四、选择函数选择函数可以用来根据条件选择性地执行不同的代码块。

以下是一个示例:Sub ChooseCaseDemoDim Value As StringValue = InputBox("请输入一个数字:")Select Case ValueCase "1"MsgBox "你输入的是数字1"Case "2"MsgBox "你输入的是数字2"Case ElseMsgBox "你输入的是其他数字"End SelectEnd Sub五、错误处理函数错误处理函数可以捕捉和处理出现的错误。

(完整)excel常用宏

(完整)excel常用宏

1.拆分单元格赋值Sub 拆分填充()Dim x As RangeFor Each x In ActiveSheet。

UsedRange.CellsIf x。

MergeCells Thenx.Selectx.UnMergeSelection.Value = x。

ValueEnd IfNext xEnd Sub2.E xcel 宏按列拆分多个excelSub Macro1()Dim wb As Workbook, arr, rng As Range, d As Object, k, t, sh As Worksheet, i&Set rng = Range("A1:f1")Application。

ScreenUpdating = FalseApplication。

DisplayAlerts = Falsearr = Range("a1:a” & Range("b” & Cells.Rows。

Count).End(xlUp)。

Row)Set d = CreateObject("scripting。

dictionary")For i = 2 To UBound(arr)If Not d.Exists(arr(i, 1)) ThenSet d(arr(i, 1)) = Cells(i, 1)。

Resize(1, 13)ElseSet d(arr(i, 1)) = Union(d(arr(i, 1)), Cells(i, 1).Resize(1, 13)) End IfNextk = d.Keyst = d.ItemsFor i = 0 To d。

Count - 1Set wb = Workbooks。

Add(xlWBATWorksheet)With wb。

Sheets(1)rng。

Copy 。

[A1]t(i)。

Copy 。

Excel-259个常用宏

Excel-259个常用宏
序号
代码目录
链接 类别
1 打开全部隐藏工作表
点击
2 循环宏
点击
3 录制宏时调用“停止录制”工具栏
点击
4 高级筛选5列不重复数据至指定表
点击
5 双击单元执行宏(工作表代码)
点击
6 双击指定区域单元执行宏(工作表代码)
点击
7 进入单元执行宏(工作表代码)
点击
8 进入指定区域单元执行宏(工作表代码)
点击
9 在多个宏中依次循环执行一个(控件按钮代码)
点击
33 不连续区域录入当前日期
点击
34 不连续区域录入当前数字日期
点击
35 不连续区域录入当前日期和时间
点击
36 不连续区域录入对勾
点击
37 不连续区域录入当前文件名
点击
38 不连续区域添加文本
点击
39 不连续区域插入文本
点击
40 从指定位置向下同时录入多单元指定内容
点击
41 按aa工作表A列的内容排列工作表标签顺序
102 选择第5行开始所有数据行
103 选择光标或选区所在行
104 选择光标或选区所在列
105 光标定位到名称指定位置
106 选择名称定义的数据区
107 选择到指定列的最后行
108 将Sheet1的A列的非空值写到Sheet2的A列
109 将名称1的数据写到名称2
110 单元反选
111 调整选中对象中的文字
点击
52 为指定工作表加指定密码保护表
点击
53 在有密码的工作表执行代码
点击
54 执行前需要验证密码的宏(控件按钮代码)
点击
55 拷贝A1公式和格式到A2

EXCEL中的宏使用实例

EXCEL中的宏使用实例

EXCEL中的宏使用实例Excel是一款功能强大的电子表格软件,其中的宏功能可以帮助用户自动化完成一系列重复性的任务。

下面是一些常见的Excel宏使用实例:1.自动填充数据宏可以帮助快速填充数据。

例如,假设有一列A1:A10的单元格需要填入连续的数字,可以使用宏录制工具录制以下操作:选择A1:A10,输入1,按下Ctrl+Enter,Excel将自动为选定的单元格填入连续数字。

2.批量修改格式宏可以快速批量修改单元格的格式。

例如,假设有一个表格中有很多日期,需要将日期格式修改为年月日的形式。

可以使用宏记录以下操作:选择需要修改的日期单元格,右键点击,选择“格式单元格”,在“数字”选项卡中选择日期格式,并点击确定。

3.数据清理与转换宏可以帮助清理和转换大量的数据。

例如,假设有一列A1:A1000的单元格需要删除其中的空行。

可以使用宏录制以下操作:选择A1:A1000,按下Ctrl+Shift+L,这会自动选择整个表格,点击数据选项卡中的“筛选”按钮,选择“清除筛选”,然后选择“仅选择的单元格”并点击确定。

4.数据分析和计算宏可以用于进行数据分析和计算。

例如,假设有一个表格中的B列和C列需要求和,并将结果显示在D列中。

可以使用宏录制以下操作:选择D1单元格,输入函数“=SUM(B1:C1)”,然后使用填充手柄将公式拖拽到D1000单元格。

5.自定义菜单与工具栏宏可以用来创建自定义菜单和工具栏,以便快速访问和执行特定的功能。

例如,假设有一组常用的宏,可以使用宏记录以下操作:点击Excel 的“开发者”选项卡,点击“插入”按钮,选择“按钮(表单控件)”,在工作表上绘制按钮,并选择要执行的宏。

6.数据导入与导出宏可以帮助将数据从其他格式导入到Excel或从Excel导出到其他格式。

例如,假设有一个CSV文件需要导入到Excel中的Sheet1中,可以使用宏录制以下操作:点击Excel的“数据”选项卡,选择“从文本”按钮,选择CSV文件并按照向导进行导入。

EXCEL宏命令大全

EXCEL宏命令大全

1、查找重复内容公式:=IF(COUNTIF(A:A,A2)>1,"重复","")。

2、用出生年月来计算年龄公式:=TRUNC((DAYS360(H6,"2009/8/30",FALSE))/360,0)。

3、从输入的18位身份证号的出生年月计算公式:=CONCATENATE(MID(E2,7,4),"/",MID(E2,11,2),"/",MID(E2,13,2))。

4、从输入的身份证号码内让系统自动提取性别,可以输入以下公式:=IF(LEN(C2)=15,IF(MOD(MID(C2,15,1),2)=1,"男","女"),IF(MOD(MID(C2,17,1),2)=1,"男","女"))公式内的“C2”代表的是输入身份证号码的单元格。

1、求和:=SUM(K2:K56) ——对K2到K56这一区域进行求和;2、平均数:=AVERAGE(K2:K56) ——对K2 K56这一区域求平均数;3、排名:=RANK(K2,K$2:K$56) ——对55名学生的成绩进行排名;4、等级:=IF(K2>=85,"优",IF(K2>=74,"良",IF(K2>=60,"及格","不及格")))5、学期总评:=K2*0.3+M2*0.3+N2*0.4 ——假设K列、M列和N列分别存放着学生的“平时总评”、“期中”、“期末”三项成绩;6、最高分:=MAX(K2:K56) ——求K2到K56区域(55名学生)的最高分;7、最低分:=MIN(K2:K56) ——求K2到K56区域(55名学生)的最低分;8、分数段人数统计:(1)=COUNTIF(K2:K56,"100") ——求K2到K56区域100分的人数;假设把结果存放于K57单元格;(2)=COUNTIF(K2:K56,">=95")-K57 ——求K2到K56区域95~99.5分的人数;假设把结果存放于K58单元格;(3)=COUNTIF(K2:K56,">=90")-SUM(K57:K58) ——求K2到K56区域90~94.5分的人数;假设把结果存放于K59单元格;(4)=COUNTIF(K2:K56,">=85")-SUM(K57:K59) ——求K2到K56区域85~89.5分的人数;假设把结果存放于K60单元格;(5)=COUNTIF(K2:K56,">=70")-SUM(K57:K60) ——求K2到K56区域70~84.5分的人数;假设把结果存放于K61单元格;(6)=COUNTIF(K2:K56,">=60")-SUM(K57:K61) ——求K2到K56区域60~69.5分的人数;假设把结果存放于K62单元格;(7)=COUNTIF(K2:K56,"<60") ——求K2到K56区域60分以下的人数;假设把结果存放于K63单元格;说明:COUNTIF函数也可计算某一区域男、女生人数。

excel中 宏activesheet.pictures.insert语法

excel中 宏activesheet.pictures.insert语法

excel中宏activesheet.pictures.insert语法全文共四篇示例,供读者参考第一篇示例:Excel中的宏是一种强大的工具,可以帮助用户自动化和简化复杂的任务。

在处理图像方面,activesheet.pictures.insert语法是一种常用的方法,可以让用户将图片插入到活动工作表中。

在本文中,我们将介绍如何使用activesheet.pictures.insert语法来插入图片,并探讨一些常见的应用场景。

activesheet.pictures.insert语法的基本用法很简单。

需要确保要插入图片的工作表是活动工作表。

然后,在宏中使用如下代码:ActiveSheet.Pictures.Insert("图片路径")执行此代码后,Excel会将指定的图片插入到活动工作表中。

用户可以通过调整图片的大小和位置来满足其需求。

除了基本的插入图片外,activesheet.pictures.insert语法还支持一些其他的参数,可以进一步定制插入的图片。

用户可以指定图片的左上角的位置、宽度、高度等。

以下是一个示例代码,演示了如何使用这些参数:ActiveSheet.Pictures.Insert("C:\Users\Username\Documents\log o.png").SelectSelection.ShapeRange.LockAspectRatio = msoFalseSelection.ShapeRange.Width = 100Selection.ShapeRange.Height = 100Selection.ShapeRange.Left = 100Selection.ShapeRange.Top = 100在这个示例中,我们首先使用.activesheet.pictures.insert语法插入了一张名为"logo.png"的图片,并且将其选中。

excel宏程序编程100例

excel宏程序编程100例

excel宏程序编程100例
很抱歉,我无法提供完整的100个例子。

但我可以给您提供几个经典的Excel宏编程示例:
1. 自动过滤数据:编写一个宏来自动过滤Excel表中的数据,
根据特定的条件筛选出符合条件的行。

2. 数据排序:编写一个宏来自动对Excel表中的数据按照特定
的列进行排序。

3. 数据合并:编写一个宏来自动合并多个Excel表格中的数据
到一个表格中。

4. 数据格式化:编写一个宏来格式化Excel表格中的数据,如
日期格式、货币格式等。

5. 数据透视表:编写一个宏来自动生成Excel表格中的数据透
视表。

6. 数据图表:编写一个宏来自动生成Excel表格中的数据图表,如柱状图、折线图等。

7. 数据验证:编写一个宏来添加数据验证规则,限制Excel表
格中的数据输入。

8. 数据计算:编写一个宏来进行Excel表格中的数据计算,如
求和、平均值等。

这些只是一些基本的例子,Excel宏编程的应用范围非常广泛,可以根据具体需求进行扩展和定制。

excel常用宏

excel常用宏

1.拆分单元格赋值Sub 拆分填充()Dim x As RangeFor Each x In edRange.CellsIf x.MergeCells Thenx.Selectx.UnMergeSelection.Value = x.ValueEnd IfNext xEnd Sub2.E xcel 宏按列拆分多个excelSub Macro1()Dim wb As Workbook, arr, rng As Range, d As Object, k, t, sh As Worksheet, i& Set rng = Range("A1:f1")Application.ScreenUpdating = FalseApplication.DisplayAlerts = Falsearr = Range("a1:a" & Range("b" & Cells.Rows.Count).End(xlUp).Row)Set d = CreateObject("scripting.dictionary")For i = 2 To UBound(arr)If Not d.Exists(arr(i, 1)) ThenSet d(arr(i, 1)) = Cells(i, 1).Resize(1, 13)ElseSet d(arr(i, 1)) = Union(d(arr(i, 1)), Cells(i, 1).Resize(1, 13)) End IfNextk = d.Keyst = d.ItemsFor i = 0 To d.Count - 1Set wb = Workbooks.Add(xlWBATWorksheet)With wb.Sheets(1)rng.Copy .[A1]t(i).Copy .[A2]End Withwb.SaveAs Filename:=ThisWorkbook.Path & "\" & k(i) & ".xlsx"wb.CloseNextApplication.DisplayAlerts = TrueApplication.ScreenUpdating = TrueMsgBox "完毕"End Sub3.E xcel 宏按列拆分多个sheet在一个工作表中是许多的公司订单记录,如何将它按公司名分拆成一个个工作表,用VBA 实现相当便捷。

EXCEL中的宏使用实例讲解

EXCEL中的宏使用实例讲解

EXCEL中的宏使用实例讲解宏(Macro)是Microsoft Excel中的一项功能,用于自动化繁琐重复的操作。

通过使用宏,用户可以录制一系列的操作步骤,并将其保存为宏代码,然后将来可以单击一个按钮或使用快捷键来执行这些操作步骤。

在本文中,我们将讲解一些常见的Excel宏使用实例。

1.插入当前日期:```vbaSub InsertDateActiveCell.Value = DateEnd Sub```2.运行公式:```vbaSub RunFormulaDim ws As WorksheetFor Each ws In ActiveWorkbook.Worksheetsws.ActivateRange("A1").SelectActiveCell.FormulaR1C1 = "=SUM(R2C2:R6C2)"Next wsEnd Sub```3.清除内容:```vbaSub ClearContentCells.ClearContentsEnd Sub```4.格式化单元格:```vbaSub FormatCellsSelection.Font.Color = RGB(255, 0, 0) ' 设置字体颜色为红色Selection.Font.Bold = True ' 设置文本加粗End Sub```5.合并单元格:```vbaSub MergeCellsSelection.Merge ' 合并单元格With Selection.HorizontalAlignment = xlCenter ' 水平居中.VerticalAlignment = xlCenter ' 垂直居中End WithEnd Sub```这些实例只是Excel宏的冰山一角。

Excel宏可以实现更加复杂的操作,包括读取和写入文件、创建自定义对话框等。

excel259个常用宏

excel259个常用宏

宏文件集▲打开全部隐藏工作表返回Sub 打开全部隐藏工作表()Dim i As IntegerFor i = 1 To Sheets.CountSheets(i).Visible = TrueNext iEnd Sub▲循环宏返回Sub 循环()AAA = Range("C2")Dim i As LongDim times As Longtimes = AAA'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)For i = 1 To timesCall 过滤一行If Range("完成标志") = "完成" Then Exit For '如果名为'完成标志'的命名单元的值等于'完成',则退出循环,如果一开始就等于'完成',则 'If Sheets("传送参数").Range("A" & i).Text = "完成" Then Exit For '如果某列出现"完成"内容则退出循环Next iEnd Sub▲录制宏时调用“停止录制”工具栏返回Sub 录制宏时调用停止录制工具栏()mandBars("Stop Recording").Visible = TrueEnd Sub▲高级筛选5列不重复数据至指定表返回Sub 高级筛选5列不重复数据至Sheet2()Sheets("Sheet2").Range("A1:E65536") = "" '清除Sheet2的A:D列Range("A1:E65536").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheet2.Range( _"A1"), Unique:=TrueSheet2.Columns("A:E").Sort Key1:=Sheet2.Range("A2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _:=xlPinYinEnd Sub▲双击单元执行宏(工作表代码)返回Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)If Range("$A$1") = "关闭" Then Exit SubSelect Case Target.AddressCase "$A$4"Call 宏1Cancel = TrueCase "$B$4"Call 宏2Cancel = TrueCase "$C$4"Call 宏3Cancel = TrueCase "$E$4"Call 宏4Cancel = TrueEnd SelectEnd Sub▲双击指定区域单元执行宏(工作表代码)返回Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)If Range("$A$1") = "关闭" Then Exit SubIf Not Application.Intersect(Target, Range("A4:A9", "C4:C9")) Is Nothing Then Call 打开隐藏表End Sub▲进入单元执行宏(工作表代码)返回'以单元格进入代替按钮对象调用宏If Range("$A$1") = "关闭" Then Exit SubSelect Case Target.AddressCase "$A$5" '单元地址(Target.Address),或命名单元名字()Call 宏1Case "$B$5"Call 宏2Case "$C$5"Call 宏3End SelectEnd Sub▲进入指定区域单元执行宏(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Range("$A$1") = "关闭" Then Exit SubIf Not Application.Intersect(Target, Range("A4:A9","C4:C9")) Is Nothing Then Call 打开隐藏表End Sub▲在多个宏中依次循环执行一个(控件按钮代码)返回Private Sub CommandButton1_Click()Static RunMacro As IntegerSelect Case RunMacroCase 0宏1RunMacro = 1Case 1宏2RunMacro = 2Case 2宏3RunMacro = 0End SelectEnd Sub▲在两个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)返回Private Sub CommandButton1_Click()With CommandButton1If .Caption = "保护工作表" ThenCall 保护工作表.Caption = "取消工作表保护"Exit SubEnd IfIf .Caption = "取消工作表保护" ThenCall 取消工作表保护.Caption = "保护工作表"Exit SubEnd IfEnd WithEnd Sub▲在三个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)返回Option ExplicitPrivate Sub CommandButton1_Click()With CommandButton1If .Caption = "宏1" ThenCall 宏1.Caption = "宏2"Exit SubEnd IfIf .Caption = "宏2" ThenCall 宏2.Caption = "宏3"Exit SubEnd IfIf .Caption = "宏3" ThenCall 宏3.Caption = "宏1"End IfEnd WithEnd Sub▲根据A1单元文本隐藏/显示按钮(控件按钮代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Range("A1") > 2 ThenCommandButton1.Visible = 1ElseCommandButton1.Visible = 0End IfEnd SubPrivate Sub CommandButton1_Click()重排窗口End Sub▲当前单元返回按钮名称(控件按钮代码)返回Private Sub CommandButton1_Click()ActiveCell = CommandButton1.CaptionEnd Sub▲当前单元内容返回到按钮名称(控件按钮代码)返回Private Sub CommandButton1_Click()CommandButton1.Caption = ActiveCellEnd Sub▲奇偶页分别打印返回Sub 奇偶页分别打印()Dim i%, Ps%Ps = ExecuteExcel4Macro("GET.DOCUMENT(50)") '总页数MsgBox "现在打印奇数页,按确定开始."ActiveSheet.PrintOut from:=i, To:=iNext iMsgBox "现在打印偶数页,按确定开始."For i = 2 To Ps Step 2ActiveSheet.PrintOut from:=i, To:=iNext iEnd Sub▲自动打印多工作表第一页返回Sub 自动打印多工作表第一页()Dim sh As IntegerDim xDim yDim syDim syzx = InputBox("请输入起始工作表名字:")sy = InputBox("请输入结束工作表名字:")y = Sheets(x).Indexsyz = Sheets(sy).IndexFor sh = y To syzSheets(sh).SelectSheets(sh).PrintOut from:=1, To:=1Next shEnd Sub▲查找A列文本循环插入分页符返回Sub 循环插入分页符()' Selection = Workbooks("临时表").Sheets("表2").Range("A1") 调用指定地址内容Dim i As LongDim times As Longtimes = Application.WorksheetFunction.CountIf(Sheet1.Range("a:a"), "分页")'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)Call 插入分页符Next iEnd SubSub 插入分页符()Cells.Find(What:="分页", After:=ActiveCell, LookIn:=xlValues, LookAt:= _xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _ .ActivateActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCellEnd SubSub 取消原分页()Cells.SelectActiveSheet.ResetAllPageBreaksEnd Sub▲将A列最后数据行以上的所有B列图片大小调整为所在单元大小返回Sub 将A列最后数据行以上的所有B列图片大小调整为所在单元大小()Dim Pic As Picture, i&i = [A65536].End(xlUp).RowFor Each Pic In Sheet1.PicturesIf Not Application.Intersect(Pic.TopLeftCell, Range("B1:B" & i)) Is Nothing Then Pic.Top = Pic.TopLeftCell.TopPic.Left = Pic.TopLeftCell.LeftPic.Height = Pic.TopLeftCell.HeightPic.Width = Pic.TopLeftCell.WidthEnd IfNextEnd Sub▲返回光标所在行数返回Sub 返回光标所在行数()x = ActiveCell.RowEnd Sub▲在A1返回当前选中单元格数量返回Sub 在A1返回当前选中单元格数量()[A1] = Selection.CountEnd Sub▲返回当前工作簿中工作表数量返回Sub 返回当前工作簿中工作表数量()t = Application.Sheets.CountMsgBox tEnd Sub▲返回光标选择区域的行数和列数返回Sub 返回光标选择区域的行数和列数()x = Selection.Rows.County = Selection.Columns.CountRange("A1") = xRange("A2") = yEnd Sub▲工作表中包含数据的最大行数返回Sub 包含数据的最大行数()n = Cells.Find("*", , , , 1, 2).RowMsgBox nEnd Sub▲返回A列数据的最大行数返回Sub 返回A列数据的最大行数()n = Range("a65536").End(xlUp).RowRange("B1") = nEnd SubSub 将所选区域文本插入新建文本框()For Each rag In Selectionn = n & rag.Value & Chr(10)NextActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, ActiveCell.Left + ActiveCell.Width, ActiveCell.Top + ActiveCell.Selection.Characters.Text = "问题:" & nWith Selection.Characters(Start:=1, Length:=3).Font.Name = "黑体".FontStyle = "常规".Size = 12End WithEnd Sub▲批量插入地址批注返回Sub 批量插入地址批注()On Error Resume NextDim r As RangeIf Selection.Cells.Count > 0 ThenFor Each r In Selectionment.Deleter.AddCommentment.Visible = Falsement.Text Text:="本单元格:" & r.Address & " of " & Selection.AddressNextEnd IfEnd Sub▲批量插入统一批注返回Sub 批量插入统一批注()Dim r As Range, msg As Stringmsg = InputBox("请输入欲批量插入的批注", "提示", "随便输点什么吧")If Selection.Cells.Count > 0 ThenFor Each r In Selectionment.Visible = Falsement.Text Text:=msgNextEnd IfEnd Sub▲以A1单元内容批量插入批注返回Sub 以A1单元内容批量插入批注()Dim r As RangeIf Selection.Cells.Count > 0 ThenFor Each r In Selectionr.AddCommentment.Visible = Falsement.Text Text:=[a1].TextNextEnd IfEnd Sub▲不连续区域插入当前文件名和表名及地址返回Sub 批量插入当前文件名和表名及地址()For Each mycell In Selectionmycell.FormulaR1C1 = "[" + + "]" + + "!" + mycell.Address NextEnd Sub▲不连续区域录入当前单元地址返回Sub 区域录入当前单元地址()For Each mycell In Selectionmycell.FormulaR1C1 = mycell.AddressNextEnd Sub▲连续区域录入当前单元地址返回Selection = "=ADDRESS(ROW(),COLUMN(),4,1)"Selection.CopySelection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=FalseEnd Sub▲返回当前单元地址返回Sub 返回当前单元地址()d = ActiveCell.Address[A1] = dEnd Sub▲不连续区域录入当前日期返回Sub 区域录入当前日期()Selection.FormulaR1C1 = Format(Now(), "yyyy-m-d")End Sub▲不连续区域录入当前数字日期返回Sub 区域录入当前数字日期()Selection.FormulaR1C1 = Format(Now(), "yyyymmdd")End Sub▲不连续区域录入当前日期和时间返回Sub 区域录入当前日期和时间()Selection.FormulaR1C1 = Format(Now(), "yyyy-m-d h:mm:ss")End Sub▲不连续区域录入对勾返回Sub 批量录入对勾()Selection.FormulaR1C1 = "√"End Sub▲不连续区域录入当前文件名返回Sub 批量录入当前文件名()Selection.FormulaR1C1 = End Sub▲不连续区域添加文本返回Sub 批量添加文本()Dim s As RangeFor Each s In Selections = s & "文本内容"NextEnd Sub▲不连续区域插入文本返回Sub 批量插入文本()Dim s As RangeFor Each s In Selections = "文本内容" & sNextEnd Sub▲从指定位置向下同时录入多单元指定内容返回Sub 从指定位置向下同时录入多单元指定内容()Dim arrarr = Array("1", "2", "13", "25", "46", "12", "0", "20")[B2].Resize(8, 1) = Application.WorksheetFunction.Transpose(arr)End Sub▲按aa工作表A列的内容排列工作表标签顺序返回Sub 按aa工作表A列的内容排列工作表标签顺序()Dim I%, str1$I = 1Sheets("aa").SelectDo While Cells(I, 1).Value <> ""str1 = Trim(Cells(I, 1).Value)Sheets(str1).SelectSheets(str1).Move after:=Sheets(I)I = I + 1Sheets("aa").SelectLoopEnd Sub▲以A1单元文本作表名插入工作表返回Sub 以A1单元文本作表名插入工作表()Dim nm As Stringnm = [a1]Sheets.Add = nmEnd Sub▲删除全部未选定工作表返回Sub 删除全部未选定工作表()Dim sht As Worksheet, n As Integer, iFlag As BooleanDim ShtName() As Stringn = ActiveWindow.SelectedSheets.CountReDim ShtName(1 To n)n = 1For Each sht In ActiveWindow.SelectedSheetsShtName(n) = n = n + 1NextApplication.DisplayAlerts = FalseFor Each sht In SheetsiFlag = FalseFor i = 1 To n - 1If ShtName(i) = TheniFlag = TrueExit ForEnd IfNextIf Not iFlag Then sht.DeleteNextApplication.DisplayAlerts = TrueEnd Sub▲工作表标签排序返回Sub 工作表标签排序()Dim i As Long, j As Long, nums As Long, msg As Longmsg = MsgBox("工作表按升序排列请选 '是[Y]'. " & vbCrLf & vbCrLf & "工作表按降序排列请选 '否[N]'", vbYesNoCancel, "工作表排序") If msg = vbCancel Then Exit Subnums = Sheets.CountIf msg = vbYes Then 'Sort ascendingFor i = 1 To numsFor j = i To numsIf UCase(Sheets(j).Name) < UCase(Sheets(i).Name) ThenSheets(j).Move Before:=Sheets(i)End IfNext jNext iElse 'Sort descendingFor i = 1 To numsFor j = i To numsIf UCase(Sheets(j).Name) > UCase(Sheets(i).Name) ThenSheets(j).Move Before:=Sheets(i)End IfNext jNext iEnd IfEnd Sub▲定义指定工作表标签颜色返回Sub 定义指定工作表标签颜色()Sheets("Sheet1").Tab.ColorIndex = 46End Sub▲在目录表建立本工作簿中各表链接目录返回Sub 在目录表建立本工作簿中各表链接目录()Dim s%, Rng As RangeOn Error Resume NextSheets("目录").ActivateIf Err = 0 ThenSheets("目录").UsedRange.DeleteElseSheets.Add = "目录"End IfFor i = 1 To Sheets.CountIf Sheets(i).Name <> "目录" Thens = s + 1Set Rng = Sheets("目录").Cells(((s - 1) Mod 20) + 1, (s - 1) \ 20 + 1 + 1)Rng = Format(s, " 0") & ". " & Sheets(i).NameActiveSheet.Hyperlinks.Add Rng, "#" & Sheets(i).Name & "!A1", ScreenTip:=Sheets(i).Name End IfNextSheets("目录").Range("b:iv").EntireColumn.ColumnWidth = 20End Sub▲建立工作表文本目录返回Sub 建立工作表文本目录()Sheets.Add before:=Sheets(1)Sheets(1).Name = "目录"For i = 2 To Sheets.CountCells(i - 1, 1) = Sheets(i).Name'Sheets(1).Hyperlinks.Add Cells(i - 1, 1), "#" & Sheets(i).Name & "!A1" '添加超链接NextEnd Sub▲查另一文件的全部表名返回Sub 查另一文件的全部表名()On Error Resume NextDim i%Dim sh As WorksheetApplication.ScreenUpdating = FalseWorkbooks.Open Filename:=ThisWorkbook.Path & "\2.xls"Windows("1.xls").Activate '当前文件名称Sheets("Sheet1").Select '当前表名称i = 1 '将表名称返回到第1行For Each sh In Workbooks("2.xls").WorksheetsCells(i, 1) = '将表名称返回到第1列i = i + 1 '返回每个表名称向下移动1行Next shWindows("2.xls").Close '关闭对象文件Application.ScreenUpdating = TrueEnd Sub▲当前单元录入计算机名返回Sub 当前单元录入计算机名()Selection = Environ("COMPUTERNAME")'Selection = Workbooks("临时表").Sheets("表2").Range("A1") 调用指定地址内容End Sub▲当前单元录入计算机用户名返回 Sub 当前单元录入计算机用户名()Selection = Environ("Username")'Selection = Workbooks("临时表").Sheets("表2").Range("A1") 调用指定地址内容End Sub▲解除全部工作表保护返回Sub 解除全部工作表保护()Dim n As IntegerFor n = 1 To Sheets.CountSheets(n).UnprotectNext nEnd Sub▲为指定工作表加指定密码保护表返回Sub 为指定工作表加指定密码保护表()Sheet10.Protect Password:="123"End Sub▲在有密码的工作表执行代码返回Sub 在有密码的工作表执行代码()Sheets("1").Unprotect Password:=123 '假定表名为“1”,密码为“123” 打开工作表Range("C:C").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True '隐藏C列空值行Sheets("1").Protect Password:=123 '重新用密码保护工作表End Sub▲执行前需要验证密码的宏(控件按钮代码)返回Private Sub CommandButton1_Click()If InputBox("请输入密码:") <> "123" Then '密码是123MsgBox "密码错误,按确定退出!", 64, "提示"Exit SubEnd IfCells(1, 1) = 10End SubSub 执行前需要验证密码的宏()If InputBox("请输入您的使用权限:", "系统提示") = 123 Then重排窗口 '要执行的宏代码或宏名称ElseMsgBox "对不起,您没有使用该宏的权限,按确定键后退出!"End IfEnd Sub▲拷贝A1公式和格式到A2返回Sub 拷贝A1公式到A2()Workbooks("临时表").Sheets("表1").Range("A1").CopyWorkbooks("临时表").Sheets("表2").Range("A2").PasteSpecialEnd Sub▲复制单元数值返回Sub 复制数值()s = Workbooks("book1").Sheets("Sheet1").Range("A1:A2")Workbooks("book2").Sheets("Sheet1").Range("A1:A2") = sEnd Sub▲插入数值条件格式返回Sub 插入数值条件格式()Selection.FormatConditions.DeleteSelection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _Formula1:="70"Selection.FormatConditions(1).Interior.ColorIndex = 45Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _Formula1:="55"Selection.FormatConditions(2).Interior.ColorIndex = 39Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _Formula1:="60"Selection.FormatConditions(3).Interior.ColorIndex = 34End Sub▲插入透明批注返回Sub 插入透明批注()Selection.AddCommentment.Visible = FalseDim XS As WorksheetFor i = 1 To ments.Countments(i).Text "透明批注"ments(i).Shape.Fill.Visible = msoFalseNextEnd Sub▲添加文本返回Sub 添加文本()Selection = Selection + "×" '不可在数字后添加文本'Selection = Workbooks("临时表").Sheets("表2").Range("A1") 调用指定地址内容End Sub▲光标定位到指定工作表A列最后数据行下一单元返回Sub 光标定位到指定工作表A列最后数据行下一单元()a = Sheets("数据库").[a65536].End(xlUp).RowSheets("数据库").SelectRange("A" & a + 1).SelectEnd Sub▲定位选定单元格式相同的全部单元格返回Sub 定位选定单元格式相同的全部单元格()Dim FirstCell As Range, FoundCell As RangeDim AllCells As RangeWith 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.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.FormulaHiddenEnd WithSet FirstCell = edRange.Find(what:="", searchformat:=True)If FirstCell Is Nothing ThenExit SubEnd IfSet AllCells = FirstCellSet FoundCell = FirstCellDoSet FoundCell = edRange.Find(After:=FoundCell, what:="", searchformat:=True) If FoundCell Is Nothing Then Exit DoSet AllCells = Union(FoundCell, AllCells)If FoundCell.Address = FirstCell.Address Then Exit DoLoopAllCells.SelectEnd Sub▲按当前单元文本定位返回Sub 按当前单元文本定位()ABC = SelectionDim aa As RangeFor Each a In edRangeIf a Like ABC ThenIf aa Is Nothing ThenSet aa = a.CellsElseSet aa = Union(aa, a.Cells)End IfEnd IfNextaa.SelectEnd Sub▲按固定文本定位返回Sub 文本定位()Dim aa As RangeFor Each a In edRangeIf a Like "*合计*" ThenIf aa Is Nothing ThenSet aa = a.CellsElseSet aa = Union(aa, a.Cells)End IfEnd IfNextaa.SelectEnd Sub▲删除包含固定文本单元的行或列返回Sub 删除包含固定文本单元的行或列()DoCells.Find(what:="哈哈").ActivateSelection.EntireRow.Delete '删除行' Selection.EntireColumn.Delete '删除列Loop Until Cells.Find(what:="哈哈") Is NothingEnd Sub▲定位数据及区域以上的空值返回Sub 定位数据及区域以上的空值()Dim aa As RangeFor Each a In edRangeIf a Like 〈0 ThenIf aa Is Nothing ThenSet aa = a.CellsElseSet aa = Union(aa, a.Cells)End IfEnd IfNextaa.SelectEnd Sub▲右侧单元自动加5(工作表代码)返回Private Sub Worksheet_Change(ByVal Target As Range)Application.EnableEvents = FalseTarget.Offset(0, 1) = Target + 5Application.EnableEvents = TrueEnd Sub▲当前单元加2返回Sub 当前单元加2()Selection = Selection + 2'Selection = Workbooks("临时表").Sheets("表2").Range("A1") 调用指定地址内容End Sub▲A列等于A列减B列返回Sub A列等于A列减B列()For i = 1 To 23Cells(i, 1) = Cells(i, 1) - Cells(i, 2)NextEnd Sub▲用于光标选定多区域跳转指定单元(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal T As Range)a = Array([b6:b7], [e6], [h6])For i = 0 To 2If Not Application.Intersect(T, a(i)) Is Nothing Then[a1].Select: Exit ForEnd IfNextEnd Sub▲将A1单元录入的数据累加到B1单元(工作表代码)返回Private Sub Worksheet_Change(ByVal Target As Range)Dim t As LongIf Target.Address = "$A$1" Thent = Sheet1.Range("$B$1").ValueSheet1.Range("$B$1").Value = t + Target.ValueEnd IfEnd Sub▲在指定颜色区域选择单元时添加/取消"√"(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim myrg As RangeFor Each myrg In TargetIf myrg.Interior.ColorIndex = 37 Then myrg = IIf(myrg <> "√", "√", "")NextEnd Sub▲在指定区域选择单元时添加/取消"√"(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim Rng As RangeIf Target.Count <= 15 ThenIf Not Application.Intersect(Target, Range("D6:D20")) Is Nothing ThenFor Each Rng In SelectionWith RngIf .Value = "" Then.Value = "√"Else.Value = ""End IfEnd WithNextEnd IfEnd IfEnd Sub▲双击指定单元,循环录入文本(工作表代码)返回Private Sub Worksheet_BeforeDoubleClick(ByVal T As Range, Cancel As Boolean)If T.Address <> "$A$1" Then Exit SubCancel = TrueT = IIf(T = "好", "中", IIf(T = "中", "差", "好"))End Sub双击指定单元,循环录入文本(工作表代码)Dim nums As BytePrivate Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)If Target.Address = "$A$1" Thennums = nums Mod 3 + 1Target = Mid("上中下", nums, 1)Target.Offset(1, 0).SelectEnd IfEnd Sub▲单元区域引用(工作表代码)返回Private Sub Worksheet_Activate()Sheet1.Range("A1:B3").Value = Sheet2.Range("A1:B3").ValueEnd Sub▲在指定区域选择单元时数值加1(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Not Application.Intersect([a1:e10], Target) Is Nothing ThenTarget = Val(Target) + 1End IfEnd Sub▲混合文本的编号返回Sub 混合文本的编号()Worksheets(1).Range("B2").Value = "北京" & (--(Mid(Worksheets(1).Range("B2"), 3, 100)) + 1) End Sub▲指定区域单元双击数据累加(工作表代码)返回Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)If Not Application.Intersect([A1:Y100], Target) Is Nothing Thenoldvalue = Val(Target.Value)inputvalue = InputBox("请输入数量,按ENTER键确认!", "数值累加器")Target.Value = oldvalue + inputvalueEnd IfEnd Sub▲选择单元区域触发事件(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Target.Address = "$A$1:$B$2" ThenMsgBox "你选择了$A$1:$B$2单元"End IfEnd Sub▲当修改指定单元内容时自动执行宏(工作表代码)返回Private Sub Worksheet_Change(ByVal Target As Range)If Not Application.Intersect(Target, [B3:B4]) Is Nothing Then重排窗口End IfEnd Sub▲被指定单元内容限制执行宏返回Sub 被指定单元限制执行宏()If Range("$A$1") = "关闭" Then Exit Sub窗口End Sub▲双击单元隐藏该行(工作表代码)返回Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)Rows(Target.Row).Hidden = TrueEnd Sub▲高亮显示行(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)Cells.Interior.ColorIndex = 2Rows("1:2").Interior.ColorIndex = 40 '保持1至2行的颜色推荐39,22,40,Rows(Target.Row).Interior.ColorIndex = 35 '高亮推荐颜色35,20,24,34,37,40,15End Sub▲高亮显示行和列(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)Cells.Interior.ColorIndex = xlNoneRows(Target.Row).Interior.ColorIndex = 34Columns(Target.Column).Interior.ColorIndex = 34End Sub▲为指定工作表设置滚动范围(工作簿代码)返回Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)Sheet1.ScrollArea = "A1:M30"End Sub▲在指定单元记录打印和预览次数(工作簿代码)返回Private Sub Workbook_BeforePrint(Cancel As Boolean)Range("A1") = 1 + Range("A1")End Sub▲自动数字金额转大写(工作表代码)返回Private Sub Worksheet_Change(ByVal M As Range)On Error Resume Nexty = Int(Round(100 * Abs(M)) / 100)j = Round(100 * Abs(M) + 0.00001) - y * 100f = (j / 10 - Int(j / 10)) * 10A = IIf(y < 1, "", Application.Text(y, "[DBNum2]") & "元")b = IIf(j > 9.5, Application.Text(Int(j / 10), "[DBNum2]") & "角", IIf(y < 1, "", IIf(f > 1, "零", "")))c = IIf(f < 1, "整", Application.Text(Round(f, 0), "[DBNum2]") & "分")M = IIf(Abs(M) < 0.005, "", IIf(M < 0, "负" & A & b & c, A & b & c))End Sub▲将全部工作表的A1单元作为单击按钮(工作簿代码)返回Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)If Target.Address = "$A$1" ThenCall 宏名End IfEnd Sub▲闹钟——到指定时间执行宏(工作簿代码)返回Private Sub Workbook_Open()Application.OnTime ("11:45:00"), "提示1" '宏名字Application.OnTime ("12:00:00"), "提示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").Range("A1") = Target.Address(0, 0)End Sub▲B列录入数据时在A列返回记录时间(工作表代码)返回Public Sub Worksheet_Change(ByVal Target As Range)If Target.Column = 2 ThenTarget.Offset(, -1) = NowEnd IfEnd Sub▲当指定区域修改时在其右侧的2个单元返回当前日期和时间(工作表代码)返回Public Sub Worksheet_Change(ByVal Target As Range)If Not Application.Intersect(Target, [A1:A1000]) Is Nothing ThenIf Target.Column = 1 ThenTarget.Offset(, 1) = DateTarget.Offset(, 2) = TimeEnd IfEnd IfEnd SubPublic Sub Worksheet_Change(ByVal Target As Range)If Not Application.Intersect(Target, [A1:A1000]) Is Nothing ThenIf Target.Column = 1 ThenTarget.Offset(, 1) = Format(Now(), "yyyy-mm-dd")Target.Offset(, 2) = Format(Now(), "h:mm:ss")End IfEnd IfEnd Sub▲指定单元显示光标位置内容(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal T As Range)Sheets(1).Range("A1") = SelectionEnd Sub▲每编辑一个单元保存文件返回Private Sub Worksheet_Change(ByVal Target As Range)ThisWorkbook.SaveEnd Sub▲指定允许编辑区域返回Sub 指定允许编辑区域()ActiveSheet.ScrollArea = "B8:G15"End Sub▲解除允许编辑区域限制返回Sub 解除允许编辑区域限制()ActiveSheet.ScrollArea = ""End Sub▲删除指定行返回Sub 删除指定行()Workbooks("临时表").Sheets("表2").Range("5:5").DeleteEnd Sub▲删除A列为指定内容的行返回Sub 删除A列为指定内容的行()Dim a, b As Integera = Sheet1.[a65536].End(xlUp).RowFor b = a To 2 Step -1If Cells(b, 1).Value = "删除" ThenRows(b).DeleteEnd IfNextEnd Sub▲删除A列非数字单元行返回Sub 删除A列非数字单元行()i = [a65536].End(xlUp).RowRange("A1:A" & i).SpecialCells(xlCellTypeConstants, 2).EntireRow.DeleteEnd Sub▲有条件删除当前行返回Sub 有条件删除当前行()If [A1] = 2 Or [B1] = "删除" ThenSelection.Delete Shift:=xlUpEnd IfEnd Sub▲选择下一行返回Sub 选择下一行()ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.SelectEnd Sub▲选择第5行开始所有数据行返回Sub 选择第5行开始所有数据行A()Dim i%i = Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious).EntireRow.RowRows("5:" & i).SelectEnd SubSub 选择第5行开始所有数据行B()Rows("5:" & Cells.Find("*", , , , 1, 2).Row).SelectEnd Sub▲选择光标或选区所在行返回Sub 选择光标或选区所在行()Selection.EntireRow.SelectEnd Sub▲选择光标或选区所在列返回Sub 选择光标或选区所在列()Selection.EntireColumn.SelectEnd Sub▲光标定位到名称指定位置返回Sub 定位()Application.Goto Range(Evaluate("名称"))End Sub▲选择名称定义的数据区返回Sub 选择名称定义的数据区()[数据区].Select '插入名称要使用INDIRECT函数'Range("数据区").Select 或者'Sheet1.Range("数据区").Select 或者End Sub▲选择到指定列的最后行返回Sub 选择到指定列的最后行()Range("C4:G" & [G65536].End(xlUp).Row).SelectEnd Sub▲将Sheet1的A列的非空值写到Sheet2的A列返回Sub 将Sheet1的A列的非空值写到Sheet2的A列()Sheet1.Columns("A:A").SpecialCells(2, 23).SpecialCells(12).Copy Sheet2.[A1]End Sub▲将名称1的数据写到名称2返回Sub Macro2()Range("位置2") = Range("位置1").ValueEnd Sub▲单元反选返回Sub 单元反选()Application.DisplayAlerts = FalseApplication.ScreenUpdating = FalseDim raddress As String, taddress As Stringraddress = Selection.Addresstaddress = edRange.AddressWith Sheets.Add.Range(taddress) = 0.Range(raddress) = "=0"raddress = .Range(taddress).SpecialCells(xlCellTypeConstants, 1).Address.DeleteEnd WithActiveSheet.Range(raddress).SelectApplication.ScreenUpdating = TrueEnd Sub▲调整选中对象中的文字返回Sub 调整选中对象中的文字()'文字居中、自动调整大小With Selection.HorizontalAlignment = xlCenter.VerticalAlignment = xlCenter.ReadingOrder = xlContext.Orientation = xlHorizontal.AutoSize = True.AddIndent = FalseEnd WithEnd Sub▲去除指定范围内的对象返回Sub 去除指定范围内的对象()Dim p As ShapeSet My = Worksheets("工作表名")For Each p In My.ShapesIf Not Application.Intersect(p.TopLeftCell, Range("范围")) Is Nothing Then p.Delete NextEnd Sub▲更新透视表数据项返回Sub DeleteMissingItems2002All()'防止数据透视表中显示无用的数据项'在 Excel 2002 或更高版本中'如果无用的数据项已经存在,'运行这个宏可以更新Dim pt As PivotTableDim ws As WorksheetFor Each ws In ActiveWorkbook.WorksheetsFor Each pt In ws.PivotTablespt.PivotCache.MissingItemsLimit = xlMissingItemsNoneNext ptNext wsEnd Sub▲将全部工作表名称写到A列返回Sub 将全部表名称写到A列()k = 1For Each Sht In SheetsCells(k + 1, 1) = '指定写入的行和列。

excel常用宏集合

excel常用宏集合

65:删除包含固定文本单元的行或列Sub 删除包含固定文本单元的行或列()DoCells.Find(what:="哈哈").ActivateSelection.EntireRow.Delete '删除行' Selection.EntireColumn.Delete '删除列Loop Until Cells.Find(what:="哈哈") Is NothingEnd Sub72:在指定颜色区域选择单元时添加/取消"√"(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim myrg As RangeFor Each myrg In TargetIf myrg.Interior.ColorIndex = 37 Then myrg = IIf(myrg <> "√", "√", "") NextEnd Sub73:在指定区域选择单元时添加/取消"√"(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim Rng As RangeIf Target.Count <= 15 ThenIf Not Application.Intersect(Target, Range("D6:D20")) Is Nothing Then For Each Rng In SelectionWith RngIf .Value = "" Then.Value = "√"Else.Value = ""End IfEnd WithNextEnd IfEnd IfEnd Sub74:双击指定单元,循环录入文本(工作表代码)Private Sub Worksheet_BeforeDoubleClick(ByVal T As Range, Cancel As Boolean)If T.Address <> "$A$1" Then Exit SubCancel = TrueT = IIf(T = "好", "中", IIf(T = "中", "差", "好"))End Sub75:双击指定单元,循环录入文本(工作表代码)Dim nums As BytePrivate Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)If Target.Address = "$A$1" Thennums = nums Mod 3 + 1Target = Mid("上中下", nums, 1)Target.Offset(1, 0).SelectEnd IfEnd Sub76:单元区域引用(工作表代码)Private Sub Worksheet_Activate()Sheet1.Range("A1:B3").Value = Sheet2.Range("A1:B3").ValueEnd Sub77:在指定区域选择单元时数值加1(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Not Application.Intersect([a1:e10], Target) Is Nothing ThenTarget = Val(Target) + 1End IfEnd Sub259个常用宏-excelhome(3)2009-08-15 14:12:5878:混合文本的编号Sub 混合文本的编号()Worksheets(1).Range("B2").Value = "" & (--(Mid(Worksheets(1).Range("B2"), 3, 100)) + 1)79:指定区域单元双击数据累加(工作表代码)Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Application.Intersect([A1:Y100], Target) Is Nothing Thenoldvalue = Val(Target.Value)inputvalue = InputBox("请输入数量,按ENTER键确认!", "数值累加器")Target.Value = oldvalue + inputvalueEnd IfEnd Sub80:选择单元区域触发事件(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Target.Address = "$A$1:$B$2" ThenMsgBox "你选择了$A$1:$B$2单元"End IfEnd Sub81:当修改指定单元容时自动执行宏(工作表代码)Private Sub Worksheet_Change(ByVal Target As Range)If Not Application.Intersect(Target, [B3:B4]) Is Nothing Then重排窗口End IfEnd Sub82:被指定单元容限制执行宏Sub 被指定单元限制执行宏()If Range("$A$1") = "关闭" Then Exit Sub窗口End Sub83:双击单元隐藏该行(工作表代码)Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Rows(Target.Row).Hidden = True84:高亮显示行(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)Cells.Interior.ColorIndex = 2Rows("1:2").Interior.ColorIndex = 40 '保持1至2行的颜色推荐39,22,40,Rows(Target.Row).Interior.ColorIndex = 35 '高亮推荐颜色35,20,24,34,37,40,15 End Sub85:高亮显示行和列(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)Cells.Interior.ColorIndex = xlNoneRows(Target.Row).Interior.ColorIndex = 34Columns(Target.Column).Interior.ColorIndex = 34End Sub86:为指定工作表设置滚动围(工作簿代码)Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Sheet1.ScrollArea = "A1:M30"End Sub87:在指定单元记录打印和预览次数(工作簿代码)Private Sub Workbook_BeforePrint(Cancel As Boolean)Range("A1") = 1 + Range("A1")End Sub88:自动数字金额转大写(工作表代码)Private Sub Worksheet_Change(ByVal M As Range)On Error Resume Nexty = Int(Round(100 * Abs(M)) / 100)j = Round(100 * Abs(M) + 0.00001) - y * 100f = (j / 10 - Int(j / 10)) * 10A = IIf(y < 1, "", Application.Text(y, "[DBNum2]") & "元")b = IIf(j > 9.5, Application.Text(Int(j / 10), "[DBNum2]") & "角", IIf(y < 1, "", IIf(f > 1, "c = IIf(f < 1, "整", Application.Text(Round(f, 0), "[DBNum2]") & "分")M = IIf(Abs(M) < 0.005, "", IIf(M < 0, "负" & A & b & c, A & b & c))End Sub89:将所有工作表的A1单元作为单击按钮(工作簿代码)Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$A$1" ThenCall 宏名End IfEnd Sub90:闹钟——到指定时间执行宏(工作簿代码)Private Sub Workbook_Open()Application.OnTime ("11:45:00"), "提示1" '宏名字Application.OnTime ("12:00:00"), "提示2" '宏名字End Sub91:改变Excel界面标题的宏(工作簿代码)Private Sub Workbook_Open()Application.Caption = "春节快乐"End Sub92:在指定工作表的指定单元返回光标当前多选区地址(工作簿代码)Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Worksheets("表2").Range("A1") = Target.Address(0, 0)End Sub93:B列录入数据时在A列返回记录时间(工作表代码)Public Sub Worksheet_Change(ByVal Target As Range)If Target.Column = 2 ThenTarget.Offset(, -1) = NowEnd IfEnd Sub94:当指定区域修改时在其右侧的2个单元返回当前日期和时间(工作表代码)Public Sub Worksheet_Change(ByVal Target As Range)If Not Application.Intersect(Target, [A1:A1000]) Is Nothing ThenIf Target.Column = 1 ThenTarget.Offset(, 1) = DateTarget.Offset(, 2) = TimeEnd IfEnd IfEnd SubPublic Sub Worksheet_Change(ByVal Target As Range)If Not Application.Intersect(Target, [A1:A1000]) Is Nothing ThenIf Target.Column = 1 ThenTarget.Offset(, 1) = Format(Now(), "yyyy-mm-dd")Target.Offset(, 2) = Format(Now(), "h:mm:ss")End IfEnd IfEnd Sub95:指定单元显示光标位置容(工作表代码)Private Sub Worksheet_SelectionChange(ByVal T As Range)Sheets(1).Range("A1") = SelectionEnd Sub96:每编辑一个单元保存文件Private Sub Worksheet_Change(ByVal Target As Range)ThisWorkbook.SaveEnd Sub97:指定允许编辑区域Sub 指定允许编辑区域()ActiveSheet.ScrollArea = "B8:G15"End Sub98:解除允许编辑区域限制Sub 解除允许编辑区域限制()ActiveSheet.ScrollArea = ""End Sub99:删除指定行Sub 删除指定行()Workbooks("临时表").Sheets("表2").Range("5:5").DeleteEnd Sub100:删除A列为指定容的行Sub 删除A列为指定容的行()Dim a, b As Integera = Sheet1.[a65536].End(xlUp).RowFor b = a To 2 Step -1If Cells(b, 1).Value = "删除" ThenRows(b).DeleteEnd IfNextEnd Sub101:删除A列非数字单元行Sub 删除A列非数字单元行()i = [a65536].End(xlUp).RowRange("A1:A" & i).SpecialCells(xlCellTypeConstants, 2).EntireRow.Delete End Sub102:有条件删除当前行Sub 有条件删除当前行()If [A1] = 2 Or [B1] = "删除" ThenSelection.Delete Shift:=xlUpEnd IfEnd Sub103:选择下一行Sub 选择下一行()ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.SelectEnd Sub104:选择第5行开始所有数据行Sub 选择第5行开始所有数据行A()Dim i%i = Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious).EntireRow.RowRows("5:" & i).SelectEnd SubSub 选择第5行开始所有数据行B()Rows("5:" & Cells.Find("*", , , , 1, 2).Row).SelectEnd Sub105:选择光标或选区所在行Sub 选择光标或选区所在行()Selection.EntireRow.SelectEnd Sub106:选择光标或选区所在列Sub 选择光标或选区所在列()Selection.EntireColumn.SelectEnd Sub107:光标定位到名称指定位置Sub 定位()Application.Goto Range(Evaluate("名称"))End Sub108:选择名称定义的数据区Sub 选择名称定义的数据区()[数据区].Select '插入名称要使用INDIRECT函数'Range("数据区").Select 或者'Sheet1.Range("数据区").Select 或者End Sub109:选择到指定列的最后行Sub 选择到指定列的最后行()Range("C4:G" & [G65536].End(xlUp).Row).SelectEnd Sub110:将Sheet1的A列的非空值写到Sheet2的A列Sub 将Sheet1的A列的非空值写到Sheet2的A列()Sheet1.Columns("A:A").SpecialCells(2, 23).SpecialCells(12).Copy Sheet2.[A1] End Sub111:将名称1的数据写到名称2Sub Macro2()Range("位置2") = Range("位置1").ValueEnd Sub112:单元反选Sub 单元反选()Application.DisplayAlerts = FalseApplication.ScreenUpdating = FalseDim raddress As String, taddress As Stringraddress = Selection.Addresstaddress = edRange.AddressWith Sheets.Add.Range(taddress) = 0.Range(raddress) = "=0"raddress = .Range(taddress).SpecialCells(xlCellTypeConstants, 1).Address.DeleteEnd WithActiveSheet.Range(raddress).SelectApplication.ScreenUpdating = TrueEnd Sub113:调整选中对象中的文字Sub 调整选中对象中的文字()'文字居中:自动调整大小With Selection.HorizontalAlignment = xlCenter.VerticalAlignment = xlCenter.ReadingOrder = xlContext.Orientation = xlHorizontal.AutoSize = True.AddIndent = FalseEnd WithEnd Sub114:去除指定围的对象Sub 去除指定围的对象()Dim p As ShapeSet My = Worksheets("工作表名")For Each p In My.ShapesIf Not Application.Intersect(p.TopLeftCell, Range("围")) Is Nothing Then p.Delete NextEnd Sub115:更新透视表数据项Sub DeleteMissingItems2002All()'防止数据透视表中显示无用的数据项'在Excel 2002 或更高版本中'假如无用的数据项已经存在,'运行这个宏可以更新Dim pt As PivotTableDim ws As WorksheetFor Each ws In ActiveWorkbook.WorksheetsFor Each pt In ws.PivotTablespt.PivotCache.MissingItemsLimit = xlMissingItemsNoneNext ptNext wsEnd Sub116:将所有工作表名称写到A列Sub 将所有表名称写到A列()k = 1For Each Sht In SheetsCells(k + 1, 1) = '指定写入的行和列k = k + 1NextEnd Sub117:为当前选定的多单元插入指定名称Sub 为当前选定的多单元插入指定名称() = "临时"s.Add Name:="临时", RefersTo:=Selection '或者换用这行代码也可以End Sub118:删除所有名称Sub 删除所有名称()On Error Resume NextDim l As Integerl = s.CountFor i = l To 1 Step -1s(i).DeleteNextEnd Sub119:以指定区域为表目录补充新表Sub 以指定区域为表目录补充新表()Dim dic As Object, sh As WorksheetDim arr, itemarr = Range("B1:BB1")Set dic = CreateObject("scripting.dictionary")For Each sh In ThisWorkbook.Worksheetsdic.Add , ""NextFor Each item In arrIf item <> "" And Not dic.exists(Trim(item)) Then With ThisWorkbook.Worksheets.Add.Name = itemEnd WithEnd IfNextSet dic = NothingEnd Sub120:按A列数据批量修改表名称Sub 按A列数据批量修改表名称()Dim i%For i = 1 To Sheets.Count - 1Sheets(i).Name = Cells(i + 1, 1).TextNextEnd Sub121:按A列数据批量创建新表(控件按钮代码)Private Sub CommandButton1_Click()On Error Resume NextDim i%, j%For i = 1 To [a65536].End(xlUp).RowFor j = 2 To Sheets.CountIf Cells(i, 1) = Sheets(j).Name ThenExit ForEnd IfNextSheets.Add(after:=Sheets(Sheets.Count)).Name = Cells(i, 1) NextEnd Sub122:清除剪贴板Sub 清除剪贴板()Application.CutCopyMode = FalsemandBars("Task Pane").Visible = False End Sub123:批量清除软回车Sub 批量清除软回车()'也可直接使用Alt+10或13替换Cells.Replace What:=Chr(10), Replacement:="", LookAt:=xlPart, SearchOrder:= _ xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=FalseEnd Sub124:判断指定文件是否已经打开Sub 判断指定文件是否已经打开()Dim x As IntegerFor x = 1 To Workbooks.CountIf Workbooks(x).Name = "函数.xls" Then '文件名称MsgBox "文件已打开"Exit SubEnd IfNextMsgBox "文件未打开"End Sub125:当前文件另存到指定目录Sub 当前激活文件另存到指定目录()ActiveWorkbook.SaveAs Filename:="E:\信件\" & End Sub126:另存指定文件名Sub 另存指定文件名()ActiveWorkbook.SaveAs ThisWorkbook.Path & "\别名.xls"End Sub127:以本工作表名称另存文件到当前目录Sub 以本工作表名称另存文件到当前目录()ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & & ".xls" End Sub128:将本工作表单独另存文件到Excel当前默认目录Sub 将本工作表单独另存文件到Excel当前默认目录()ActiveSheet.CopyActiveWorkbook.SaveAs Filename:= & ".xls"End Sub129:以活动工作表名称另存文件到Excel当前默认目录Sub 以活动工作表名称另存文件到Excel当前默认目录()ActiveWorkbook.SaveAs Filename:= & ".xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _, CreateBackup:=FalseEnd Sub130:另存所有工作表为工作簿Sub 另存所有工作表为工作簿()Dim sht As WorksheetApplication.ScreenUpdating = Falseipath = ThisWorkbook.Path & "\"For Each sht In Sheetssht.CopyActiveWorkbook.SaveAs ipath & & ".xls" '(工作表名称为文件名)'ActiveWorkbook.SaveAs ipath & & Trim(sht.[d15]) & ".xls" '(文件名称& D15单元容)'ActiveWorkbook.SaveAs ipath & Trim(sht.[d15]) & ".xls" '(文件名称为D15单元容)ActiveWorkbook.CloseNextApplication.ScreenUpdating = TrueEnd Sub131:以指定单元容为新文件名另存文件Sub 以指定单元容为新文件名另存文件()ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Sheet1.[A1]End Sub132:以当前日期为新文件名另存文件Sub 以当前日期为新文件名另存文件()ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Format(Now(), "yyyymmdd") & ".xls" End SubSub 以当前日期为名称另存文件()ActiveWorkbook.SaveAs Filename:=Date & ".xls"End Sub133:以当前日期和时间为新文件名另存文件Sub 以当前日期和时间为新文件名另存文件()ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Format(Now(), "yyyy" & "年" & "mm" & "月" & "dd" & "日" & "h" & "时" & "mm" & "分" & "ss" & "秒") & ".xls"End Sub134:另存本表为TXT文件Sub 另存本表为TXT文件()Dim s As StringDim FullName As String, rng As RangeApplication.ScreenUpdating = FalseFullName = ( & ".txt") '以当前表名为TXT文件名' FullName = Replace(ThisWorkbook.FullName, ".xls", ".txt") '以当前文件名为TXT文件名' FullName = Replace(ThisWorkbook.FullName, ".xls", & ".txt") '以文件名&表名为TXT文件名Open FullName For Output As #1 '以读写方式打开文件,每次写容都会覆盖原先的容'参考帮助,fullname为文件全名For Each rng In Range("a1").CurrentRegions = s & IIf(s = "", "", "|") & rng.ValueIf rng.Column = Range("a1").CurrentRegion.Columns.Count ThenPrint #1, s & "|" '把数据写到文本文件里s = ""End IfNextClose #1 '关闭文件Application.ScreenUpdating = TrueMsgBox "数据已导入文本"End Sub135:引用指定位置单元容为部分文件名另存文件Sub 引用指定位置单元容为部分文件名另存文件()ActiveWorkbook.SaveAs Filename:="E:\信件\" & "解答" & Range("sheet1!a1") & "郎雀.xls" End Sub136:将A列数据排序到D列Sub 将A列数据排序到D列()[d:d] = [a:a].Value[d:d].Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlYesEnd Sub137:将指定围的数据排列到D列Sub 将指定围的数据排列到D列()Dim arr1, arr2, i%, xarr1 = Range("A1:C3")ReDim arr2(1 To UBound(arr1, 1) * UBound(arr1, 2), 1 To 1)For Each x In Application.Transpose(arr1)i = i + 1arr2(i, 1) = xNext xRange("D1").Resize(i, 1) = arr2End Sub光标移动Sub 光标移动()ActiveCell.Offset(1, 2).Select '向下移动1行,向右移动2列End Sub138:光标所在行上移一行Sub 光标所在行上移一行()Dim i%i = Split(ActiveCell.Address, "$")(2)If i > 1 ThenRows(i).CutRows(i - 1).Insert Shift:=xlDownEnd IfEnd Sub139:加数据有效限制Sub 加数据有效限制()With Selection.Validation.Delete.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _xlBetween, Formula1:="bigsun010sina.".IgnoreBlank = False.InCellDropdown = False.InputTitle = "".ErrorTitle = "".InputMessage = "".ErrorMessage = "要奋斗就会有牺牲,死人的事是经常发生的。

257个常用Excel宏命令-工具-牧龙在野!

257个常用Excel宏命令-工具-牧龙在野!

257个常用Excel宏命令-工具-牧龙在野!展开全文工作的时候用到的,感觉很实用,保存下来。

随时查询学习。

目录:1、打开全部隐藏工作表2、循环宏3、录制宏时调用“停止录制”工具栏4、高级筛选5列不重复数据至指定表5、双击单元执行宏(工作表代码)6、双击指定区域单元执行宏(工作表代码)7、进入单元执行宏(工作表代码)8、进入指定区域单元执行宏(工作表代码)9、在多个宏中依次循环执行一个(控件按钮代码)10、在两个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)11、在三个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)12、根据A1单元文本隐藏/显示按钮(控件按钮代码)13、当前单元返回按钮名称(控件按钮代码)14、当前单元内容返回到按钮名称(控件按钮代码)15、奇偶页分别打印16、自动打印多工作表第一页17、查找A列文本循环插入分页符18、将A列最后数据行以上的所有B列图片大小调整为所在单元大小19、返回光标所在行数20、在A1返回当前选中单元格数量21、返回当前工作簿中工作表数量22、返回光标选择区域的行数和列数23、工作表中包含数据的最大行数24、返回A列数据的最大行数25、将所选区域文本插入新建文本框26、批量插入地址批注27、批量插入统一批注28、以A1单元内容批量插入批注29、不连续区域插入当前文件名和表名及地址30、不连续区域录入当前单元地址31、连续区域录入当前单元地址32、返回当前单元地址33、不连续区域录入当前日期34、不连续区域录入当前数字日期35、不连续区域录入当前日期和时间36、不连续区域录入对勾37、不连续区域录入当前文件名38、不连续区域添加文本39、不连续区域插入文本40、从指定位置向下同时录入多单元指定内容41、按aa工作表A列的内容排列工作表标签顺序42、以A1单元文本作表名插入工作表43、删除全部未选定工作表44、工作表标签排序45、定义指定工作表标签颜色46、在目录表建立本工作簿中各表链接目录47、建立工作表文本目录48、查另一文件的全部表名49、当前单元录入计算机名50、当前单元录入计算机用户名51、解除全部工作表保护52、为指定工作表加指定密码保护表53、在有密码的工作表执行代码54、执行前需要验证密码的宏(控件按钮代码)55、执行前需要验证密码的宏()56、拷贝A1公式和格式到A257、复制单元数值58、插入数值条件格式59、插入透明批注60、添加文本61、光标定位到指定工作表A列最后数据行下一单元62、定位选定单元格式相同的全部单元格63、按当前单元文本定位64、按固定文本定位65、删除包含固定文本单元的行或列66、定位数据及区域以上的空值67、右侧单元自动加5(工作表代码)68、当前单元加269、A列等于A列减B列70、用于光标选定多区域跳转指定单元(工作表代码)71、将A1单元录入的数据累加到B1单元(工作表代码)72、在指定颜色区域选择单元时添加/取消'√'(工作表代码)73、在指定区域选择单元时添加/取消'√'(工作表代码)74、双击指定单元,循环录入文本(工作表代码)75、双击指定单元,循环录入文本(工作表代码)76、单元区域引用(工作表代码)77、在指定区域选择单元时数值加1(工作表代码)78、混合文本的编号79、指定区域单元双击数据累加(工作表代码)80、选择单元区域触发事件(工作表代码)81、当修改指定单元内容时自动执行宏(工作表代码)82、被指定单元内容限制执行宏83、双击单元隐藏该行(工作表代码)84、高亮显示行(工作表代码)85、高亮显示行和列(工作表代码)86、为指定工作表设置滚动范围(工作簿代码)87、在指定单元记录打印和预览次数(工作簿代码)88、自动数字金额转大写(工作表代码)89、将全部工作表的A1单元作为单击按钮(工作簿代码)90、闹钟——到指定时间执行宏(工作簿代码)91、改变Excel界面标题的宏(工作簿代码)92、在指定工作表的指定单元返回光标当前多选区地址(工作簿代码)93、B列录入数据时在A列返回记录时间(工作表代码)94、当指定区域修改时在其右侧的2个单元返回当前日期和时间(工作表代码)95、指定单元显示光标位置内容(工作表代码)96、每编辑一个单元保存文件97、指定允许编辑区域98、解除允许编辑区域限制99、删除指定行100、删除A列为指定内容的行101、删除A列非数字单元行102、有条件删除当前行103、选择下一行104、选择第5行开始所有数据行105、选择光标或选区所在行106、选择光标或选区所在列107、光标定位到名称指定位置108、选择名称定义的数据区109、选择到指定列的最后行110、将Sheet1的A列的非空值写到Sheet2的A列111、将名称1的数据写到名称2112、单元反选113、调整选中对象中的文字114、去除指定范围内的对象115、更新透视表数据项116、将全部工作表名称写到A列117、为当前选定的多单元插入指定名称118、删除全部名称119、以指定区域为表目录补充新表120、按A列数据批量修改表名称121、按A列数据批量创建新表(控件按钮代码) 122、清除剪贴板123、批量清除软回车124、判断指定文件是否已经打开125、当前文件另存到指定目录126、另存指定文件名127、以本工作表名称另存文件到当前目录128、将本工作表单独另存文件到Excel当前默认目录129、以活动工作表名称另存文件到Excel当前默认目录130、另存所有工作表为工作簿131、以指定单元内容为新文件名另存文件133、以当前日期和时间为新文件名另存文件134、另存本表为TXT文件135、引用指定位置单元内容为部分文件名另存文件136、将A列数据排序到D列137、将指定范围的数据排列到D列138、光标所在行上移一行139、加数据有效限制140、取消数据有效限制141、重排窗口143、回车光标向右144、回车光标向下146、保存并退出Excel147、隐藏/显示指定列空值行148、深度隐藏指定工作表149、隐藏指定工作表150、隐藏当前工作表151、返回当前工作表名称152、获取上一次所进入工作簿的工作表名称153、按光标选定颜色隐藏本列其他颜色行154、打开工作簿自动隐藏录入表以外的其他表155、除最左边工作表外深度隐藏所有表156、关闭文件时自动隐藏指定工作表(ThisWorkbook) 157、打开文件时提示指定工作表是保护状态(ThisWorkbook) 158、插入10行159、全选固定范围内小于0的单元160、全选选定范围内小于0的单元161、固定区域单元分类变色162、A列半角内容变红163、单元格录入数据时运行宏的代码164、根据B列最后数据快速合并A列单元格的控件代码165、在F1单元显示光标位置批注内容的代码166、显示光标所在单元的批注的代码167、使单元内容保持不变的工作表代码168、有条件执行宏169、有条件执行不同的宏170、提示确定或取消执行宏171、提示开始和结束172、拷贝指定表不相邻多列数据到新位置173、选择2至4行174、在当前选区有条件替换数值为文本175、自动筛选全部显示指定列176、自动筛选第2列值为A的行177、取消自动筛选()178、全部显示指定表的自动筛选179、强行合并单元180、设置单元区域格式181、在所有工作表的A1单元返回顺序号182、根据A1单元内容返回C1数值183、根据A1内容选择执行宏184、删除A列空行185、在A列产生不重复随机数186、将A列数据随机排列到F列187、取消选定区域的公式只保留值(假空转真空) 188、处理导入的显示为科学计数法样式的身份证号189、返回指定单元的行高和列宽190、指定行高和列宽191、指定单元的行高和列宽与A1单元相同191、填公式192、建立当前工作表的副本为001表193、在第一个表前插入多工作表194、清除A列再插入序号195、反方向文本(自定义函数)196、指定选择单元区域弹出消息197、将B列数据添加超链接到K列198、删除B列数据的超链接199、分离临时表A列数据的文本和超链接并整理到数据库表200、分离临时表A列数据的文本和超链接并会同其他数据整理到数据库表201、返回A列最后一个非空单元行号202、返回表中第一个非空单元地址(行搜索)203、返回表中各非空单元区域地址(行搜索)204、返回第一个数值行号205、返回第1行最右边非空单元的列号206、返回连续数值单元的数量207、统计指定范围和内容的单元数量208、统计不同颜色的数字的和(自定义函数)209、返回非空单元数量210、返回A列非空单元数量211、返回圆周率π212、定义指定单元内容为页眉/页脚213、提示并全部清除当前选择区域214、全部清除当前选择区域215、清除指定区域数值216、对指定工作表执行取消隐藏》打印》隐藏工作表217、打开文件时执行指定宏(工作簿代码)218、关闭文件时执行指定宏(工作簿代码)219、弹出提示A1单元内容220、延时15秒执行重排窗口宏221、撤消工作表保护并取消密码222、重算指定表223、将第5行移到窗口的最上面224、对第一张工作表的指定区域进行排序225、显示指定工作表的打印预览226、用单元格A1的内容作为文件名另存当前工作簿227、[禁用/启用]保存和另存的代码228、在A和B列返回当前选区的名称和公式229、朗读朗读A列,按ESC键中止230、朗读固定语句,请按ESC键终止231、在M和N列的14行以下选择单元时显示调用日历控件(工作表代码)232、添加自定义序列233、弹出打印对话框234、返回总页码235、合并各工作表内容236、合并指定目录中所有文件中相同格式工作表的数据237、隐藏指定工作表的指定列238、把a列不重复值取到e列239、当前选区的行列数240、单元格录入1位字符就跳转(工作表代码)241、当指定日期(每月10日)打开文件执行宏242、提示并清空单元区域243、返回光标所在行号244、按照当前行A列的图片名称插入图片到H列245、当前行下插入1行246、取消指定行或列的隐藏247、复制单元格所在行248、复制单元格所在列249、新建一个工作表250、新建一个工作簿251、选择多表为工作组252、在当前工作组各表中分别执行指定宏253、复制当前工作簿的报表到临时工作簿254、删除指定文件255、合并A1至C1的内容写到D15单元的批注中256、自动重算257、手动重算命令:1、打开全部隐藏工作表Sub 打开全部隐藏工作表()Dim i AsIntegerFor i = 1To Sheets.CountSheets(i).Visible = TrueNextiEnd Sub2、循环宏Sub 循环()AAA =Range('C2')Dim i AsLongDim timesAs Longtimes =AAA'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)For i = 1To timesCall 过滤一行If Range('完成标志') = '完成' ThenExit For'如果名为'完成标志'的命名单元的值等于'完成',则退出循环,如果一开始就等于'完成',则只执行一次循环就退出'If Sheets('传送参数').Range('A' & i).Text = '完成'Then ExitFor'如果某列出现'完成'内容则退出循环NextiEnd Sub3、录制宏时调用“停止录制”工具栏Sub 录制宏时调用停止录制工具栏()mandBars('Stop Recording').Visible = True End Sub4、高级筛选5列不重复数据至指定表Sub 高级筛选5列不重复数据至Sheet2()Sheets('Sheet2').Range('A1:E65536') = '' '清除Sheet2的A:D 列Range('A1:E65536').AdvancedFilterAction:=xlFilterCopy,CopyT oRange:=Sheet2.Range( _ 'A1'), Unique:=TrueSheet2.Columns('A:E').SortKey1:=Sheet2.Range('A2'),Order1:=xlAscending,Header:=xlGuess, _OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,SortMethod _:=xlPinYinEnd Sub5、双击单元执行宏(工作表代码)Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)IfRange('$A$1') = '关闭' ThenExit SubSelectCase Target.AddressCase '$A$4'Call 宏1Cancel = TrueCase '$B$4'Call 宏2Cancel = TrueCase '$C$4'Call 宏3Cancel = TrueCase '$E$4'Call 宏4Cancel = TrueEndSelectEnd Sub6、双击指定区域单元执行宏(工作表代码)Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)IfRange('$A$1') = '关闭' Then Exit SubIf NotApplication.Intersect(Target, Range('A4:A9', 'C4:C9')) Is NothingThen Call 打开隐藏表End Sub7、进入单元执行宏(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)'以单元格进入代替按钮对象调用宏IfRange('$A$1') = '关闭' Then Exit SubSelectCase Target.AddressCase '$A$5' '单元地址(Target.Address),或命名单元名字()Call 宏1Case '$B$5'Call 宏2Case '$C$5'Call 宏3EndSelectEnd Sub8、进入指定区域单元执行宏(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)IfRange('$A$1') = '关闭' Then Exit SubIf NotApplication.Intersect(Target, Range('A4:A9','C4:C9')) IsNothingThen Call 打开隐藏表End Sub9、在多个宏中依次循环执行一个(控件按钮代码)Private Sub CommandButton1_Click()StaticRunMacro As IntegerSelectCase RunMacroCase 0宏1RunMacro = 1Case 1宏2RunMacro = 2Case 2宏3RunMacro = 0EndSelectEnd Sub10、在两个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)Private Sub CommandButton1_Click()WithCommandButton1If .Caption = '保护工作表' ThenCall 保护工作表.Caption = '取消工作表保护'End IfIf .Caption = '取消工作表保护' ThenCall 取消工作表保护.Caption = '保护工作表'Exit SubEnd IfEndWithEnd Sub11、在三个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)Option ExplicitPrivate Sub CommandButton1_Click()WithCommandButton1If .Caption = '宏1' ThenCall 宏1.Caption = '宏2'Exit SubEnd IfIf .Caption = '宏2' ThenCall 宏2.Caption = '宏3'Exit SubEnd IfIf .Caption = '宏3' ThenCall 宏3.Caption = '宏1'End IfEndWithEnd Sub12、根据A1单元文本隐藏/显示按钮(控件按钮代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Range('A1') > 2 ThenCommandButton1.Visible = 1ElseCommandButton1.Visible = 0End IfEnd SubPrivate Sub CommandButton1_Click()重排窗口End Sub13、当前单元返回按钮名称(控件按钮代码)Private Sub CommandButton1_Click()ActiveCell = CommandButton1.CaptionEnd Sub14、当前单元内容返回到按钮名称(控件按钮代码)Private Sub CommandButton1_Click() CommandButton1.Caption = ActiveCellEnd Sub15、奇偶页分别打印Sub 奇偶页分别打印()Dim i%, Ps%Ps = ExecuteExcel4Macro('GET.DOCUMENT(50)') '总页数MsgBox '现在打印奇数页,按确定开始.'For i = 1 To Ps Step 2ActiveSheet.PrintOut from:=i, To:=iNext iMsgBox '现在打印偶数页,按确定开始.'For i = 2 To Ps Step 2ActiveSheet.PrintOut from:=i, To:=iNext iEnd Sub16、自动打印多工作表第一页Sub 自动打印多工作表第一页()Dim sh As IntegerDim xDim yDim syDim syzx = InputBox('请输入起始工作表名字:')sy = InputBox('请输入结束工作表名字:')y = Sheets(x).Indexsyz = Sheets(sy).IndexFor sh = y To syzSheets(sh).SelectSheets(sh).PrintOut from:=1, To:=1Next shEnd Sub17、查找A列文本循环插入分页符Sub 循环插入分页符()' Selection = Workbooks('临时表').Sheets('表2').Range('A1')调用指定地址内容Dim i As LongDim times As Longtimes=Application.WorksheetFunction.CountIf(Sheet1.Range('a:a'),'分页')'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)For i = 1 To timesCall 插入分页符Next iEnd SubSub 插入分页符()Cells.Find(What:='分页',After:=ActiveCell, LookIn:=xlValues,LookAt:= _xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,MatchCase:=False) _.ActivateActiveWindow.SelectedSheets.HPageBreaks.AddBefore:=ActiveCellEnd SubSub 取消原分页()Cells.SelectActiveSheet.ResetAllPageBreaksEnd Sub18、将A列最后数据行以上的所有B列图片大小调整为所在单元大小Sub 将A列最后数据行以上的所有B列图片大小调整为所在单元大小()Dim PicAs Picture, i&i =[A65536].End(xlUp).RowFor EachPic In Sheet1.PicturesIf Not Application.Intersect(Pic.TopLeftCell, Range('B1:B'& i)) Is Nothing ThenPic.Top = Pic.T opLeftCell.TopPic.Left = Pic.TopLeftCell.LeftPic.Height = Pic.TopLeftCell.HeightPic.Width = Pic.TopLeftCell.WidthEnd IfNextEnd Sub19、返回光标所在行数Sub 返回光标所在行数()x =ActiveCell.RowRange('A1') = xEnd Sub20、在A1返回当前选中单元格数量Sub 在A1返回当前选中单元格数量() [A1] =Selection.CountEnd Sub21、返回当前工作簿中工作表数量Sub 返回当前工作簿中工作表数量() t =Application.Sheets.Count MsgBoxtEnd Sub22、返回光标选择区域的行数和列数Sub 返回光标选择区域的行数和列数() x =Selection.Rows.County =Selection.Columns.CountRange('A1') = xRange('A2') = yEnd Sub23、工作表中包含数据的最大行数Sub 包含数据的最大行数()n =Cells.Find('*', , , , 1, 2).RowMsgBoxnEnd Sub24、返回A列数据的最大行数Sub 返回A列数据的最大行数()n =Range('a65536').End(xlUp).RowRange('B1') = nEnd Sub25、将所选区域文本插入新建文本框Sub 将所选区域文本插入新建文本框()For Eachrag In Selectionn = n & rag.Value & Chr(10)NextActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizon tal,ActiveCell.Left + ActiveCell.Width, ActiveCell.Top+ActiveCell.Height, 250#, 100).SelectSelection.Characters.Text = '问题:' & nWithSelection.Characters(Start:=1, Length:=3).Font.Name = '黑体'.FontStyle = '常规'.Size = 12EndWithEnd Sub26、批量插入地址批注Sub 批量插入地址批注()On ErrorResume NextDim r AsRangeIfSelection.Cells.Count > 0 ThenFor Each r In Selectionment.Deleter.AddCommentment.Visible = Falsement.Text Text:='本单元格:' & r.Address& ' of ' & Selection.AddressNextEndIfEnd Sub27、批量插入统一批注Sub 批量插入统一批注()Dim r AsRange, msg As Stringmsg =InputBox('请输入欲批量插入的批注', '提示', '随便输点什么吧')IfSelection.Cells.Count > 0 ThenFor Each r In Selectionr.AddCommentment.Visible = Falsement.Text Text:=msgNextEndIfEnd Sub28、以A1单元内容批量插入批注Sub 以A1单元内容批量插入批注()Dim r AsRangeIfSelection.Cells.Count > 0 ThenFor Each r In Selectionr.AddCommentment.Visible = Falsement.Text Text:=[a1].TextNextEndIfEnd Sub29、不连续区域插入当前文件名和表名及地址Sub 批量插入当前文件名和表名及地址()For Eachmycell In Selectionmycell.FormulaR1C1 = '[' + + ']' + + '!' + mycell.AddressNextEnd Sub30、不连续区域录入当前单元地址Sub 区域录入当前单元地址()For Eachmycell In Selectionmycell.FormulaR1C1 = mycell.AddressNextEnd Sub31、连续区域录入当前单元地址Sub 连续区域录入当前单元地址()Selection= '=ADDRESS(ROW(),COLUMN(),4,1)'Selection.CopySelection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,SkipBlanks _:=False, Transpose:=FalseEnd Sub32、返回当前单元地址Sub 返回当前单元地址()d =ActiveCell.Address[A1] =dEnd Sub33、不连续区域录入当前日期Sub 区域录入当前日期()Selection.FormulaR1C1 = Format(Now(), 'yyyy-m-d')End Sub34、不连续区域录入当前数字日期Sub 区域录入当前数字日期()Selection.FormulaR1C1 = Format(Now(), 'yyyymmdd')End Sub35、不连续区域录入当前日期和时间Sub 区域录入当前日期和时间()Selection.FormulaR1C1 = Format(Now(), 'yyyy-m-d h:mm:ss') End Sub36、不连续区域录入对勾Sub 批量录入对勾()Selection.FormulaR1C1 = '√'End Sub37、不连续区域录入当前文件名Sub 批量录入当前文件名()Selection.FormulaR1C1 = End Sub38、不连续区域添加文本Sub 批量添加文本()Dim s AsRangeFor Eachs In Selections = s & '文本内容'NextEnd Sub39、不连续区域插入文本Sub 批量插入文本()Dim s AsRangeFor Eachs In Selections = '文本内容' & sNextEnd Sub40、从指定位置向下同时录入多单元指定内容Sub 从指定位置向下同时录入多单元指定内容()Dimarrarr =Array('1', '2', '13', '25', '46', '12', '0', '20')[B2].Resize(8, 1) =Application.WorksheetFunction.Transpose(arr)End Sub41、按aa工作表A列的内容排列工作表标签顺序Sub 按aa工作表A列的内容排列工作表标签顺序()Dim I%,str1$I = 1Sheets('aa').SelectDo WhileCells(I, 1).Value <> ''str1 = Trim(Cells(I, 1).Value)Sheets(str1).SelectSheets(str1).Move after:=Sheets(I)I = I + 1Sheets('aa').SelectLoopEnd Sub42、以A1单元文本作表名插入工作表Sub 以A1单元文本作表名插入工作表()Dim nm AsStringnm =[a1]Sheets.Add = nmEnd Sub43、删除全部未选定工作表Sub 删除全部未选定工作表()Dim shtAs Worksheet, n As Integer, iFlag As Boolean DimShtName() As Stringn =ActiveWindow.SelectedSheets.Count ReDimShtName(1 To n)n = 1For Eachsht In ActiveWindow.SelectedSheets ShtName(n) = n = n + 1NextApplication.DisplayAlerts = FalseFor Eachsht In SheetsiFlag = FalseFor i = 1 To n - 1If ShtName(i) = TheniFlag = TrueExit ForEnd IfNextIf Not iFlag Then sht.DeleteNextApplication.DisplayAlerts = TrueEnd Sub44、工作表标签排序Sub 工作表标签排序()Dim i AsLong, j As Long, nums As Long, msg As Longmsg =MsgBox('工作表按升序排列请选'是[Y]'. ' & vbCrLf& vbCrLf & '工作表按降序排列请选 '否[N]'',vbYesNoCancel, '工作表排序')If msg =vbCancel Then Exit Subnums =Sheets.CountIf msg =vbYes Then 'Sort ascendingFor i = 1 To numsFor j = i To numsIf UCase(Sheets(j).Name) < UCase(Sheets(i).Name)ThenSheets(j).Move Before:=Sheets(i)End IfNext jNextiElse'Sort descendingFor i = 1 To numsFor j = i To numsIf UCase(Sheets(j).Name) > UCase(Sheets(i).Name)ThenSheets(j).Move Before:=Sheets(i)End IfNext jNext iEndIfEnd Sub259个常用宏-excelhome(2)2009-08-15 14:11:4545、定义指定工作表标签颜色Sub 定义指定工作表标签颜色()Sheets('Sheet1').Tab.ColorIndex = 46 End Sub46、在目录表建立本工作簿中各表链接目录Sub 在目录表建立本工作簿中各表链接目录() Dim s%,Rng As RangeOn ErrorResume NextSheets('目录').ActivateIf Err =0 ThenSheets('目录').UsedRange.DeleteElseSheets.Add = '目录'EndIfFor i = 1To Sheets.CountIf Sheets(i).Name <> '目录' Thens = s + 1Set Rng = Sheets('目录').Cells(((s - 1) Mod 20) + 1, (s - 1) \ 20 + 1+ 1)Rng = Format(s, ' 0') & '. ' &Sheets(i).NameActiveSheet.Hyperlinks.Add Rng, '#' &Sheets(i).Name & '!A1',ScreenTip:=Sheets(i).NameEnd IfNextSheets('目录').Range('b:iv').EntireColumn.ColumnWidth = 20 End Sub47、建立工作表文本目录Sub 建立工作表文本目录()Sheets.Add before:=Sheets(1)Sheets(1).Name = '目录'For i = 2To Sheets.CountCells(i - 1, 1) = Sheets(i).Name'Sheets(1).Hyperlinks.Add Cells(i - 1, 1), '#' &Sheets(i).Name &'!A1' '添加超链接NextEnd Sub48、查另一文件的全部表名Sub 查另一文件的全部表名()On ErrorResume NextDimi%Dim sh AsWorksheetApplication.ScreenUpdating = FalseWorkbooks.Open Filename:=ThisWorkbook.Path &'\2.xls' Windows('1.xls').Activate '当前文件名称Sheets('Sheet1').Select '当前表名称i =1 '将表名称返回到第1行For Eachsh In Workbooks('2.xls').WorksheetsCells(i, 1) = '将表名称返回到第1列i = i +1 '返回每个表名称向下移动1行NextshWindows('2.xls').Close '关闭对象文件Application.ScreenUpdating = TrueEnd Sub49、当前单元录入计算机名Sub 当前单元录入计算机名()Selection =Environ('COMPUTERNAME')'Selection = Workbooks('临时表').Sheets('表2').Range('A1')调用指定地址内容EndSub50、当前单元录入计算机用户名Sub 当前单元录入计算机用户名()Selection =Environ('Username')'Selection = Workbooks('临时表').Sheets('表2').Range('A1')调用指定地址内容End Sub51、解除全部工作表保护Sub 解除全部工作表保护()Dim n AsIntegerFor n = 1T o Sheets.CountSheets(n).UnprotectNextnEnd Sub52、为指定工作表加指定密码保护表Sub 为指定工作表加指定密码保护表()Sheet10.Protect Password:='123'End Sub53、在有密码的工作表执行代码Sub 在有密码的工作表执行代码()Sheets('1').Unprotect Password:=123 '假定表名为“1”,密码为“123” 打开工作表Range('C:C').SpecialCells(xlCellTypeBlanks).EntireRow.Hidde n =True '隐藏C列空值行Sheets('1').ProtectPassword:=123 '重新用密码保护工作表54、执行前需要验证密码的宏(控件按钮代码)Private Sub CommandButton1_Click()IfInputBox('请输入密码:') <> '123' Then'密码是123 MsgBox '密码错误,按确定退出!', 64, '提示'Exit SubEndIfCells(1,1) = 10End Sub55、执行前需要验证密码的宏()Sub 执行前需要验证密码的宏()IfInputBox('请输入您的使用权限:', '系统提示') = 123 Then重排窗口 '要执行的宏代码或宏名称ElseMsgBox '对不起,您没有使用该宏的权限,按确定键后退出!' EndIfEnd Sub56、拷贝A1公式和格式到A2Sub 拷贝A1公式到A2()Workbooks('临时表').Sheets('表1').Range('A1').Copy Workbooks('临时表').Sheets('表2').Range('A2').PasteSpecial57、复制单元数值Sub 复制数值()s =Workbooks('book1').Sheets('Sheet1').Range('A1:A2')Workbooks('book2').Sheets('Sheet1').Range('A1:A2') = sEnd Sub58、插入数值条件格式Sub 插入数值条件格式()Selection.FormatConditions.DeleteSelection.FormatConditions.AddType:=xlCellValue,Operator:=xlGreater, _Formula1:='70'Selection.FormatConditions(1).Interior.ColorIndex = 45Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess,_Formula1:='55'Selection.FormatConditions(2).Interior.ColorIndex = 39Selection.FormatConditions.AddType:=xlCellValue,Operator:=xlGreater, _Formula1:='60'Selection.FormatConditions(3).Interior.ColorIndex = 34End Sub59、插入透明批注Sub 插入透明批注()Selection.AddCommentment.Visible = FalseDim XS AsWorksheetFor i = 1To ments.Countments(i).Text '透明批注'ments(i).Shape.Fill.Visible = msoFalseNextEnd Sub60、添加文本Sub 添加文本()Selection = Selection + '×''不可在数字后添加文本'Selection = Workbooks('临时表').Sheets('表2').Range('A1')调用指定地址内容EndSub61、光标定位到指定工作表A列最后数据行下一单元Sub 光标定位到指定工作表A列最后数据行下一单元()a =Sheets('数据库').[a65536].End(xlUp).RowSheets('数据库').SelectRange('A'& a + 1).SelectEnd Sub62、定位选定单元格式相同的全部单元格Sub 定位选定单元格式相同的全部单元格()DimFirstCell As Range, FoundCell As RangeDimAllCells As RangeWith Application.FindFormat.Clear.NumberFormatLocal = Selection.NumberFormatLocal.HorizontalAlignment = Selection.HorizontalAlignment.VerticalAlignment = Selection.VerticalAlignment.WrapText = Selection.WrapText.Orientation = Selection.Orientation.AddIndent = Selection.AddIndent.IndentLevel = Selection.IndentLevel.ShrinkT oFit = Selection.ShrinkT oFit.MergeCells = Selection.MergeCells = .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.FormulaHiddenEnd WithSetFirstCell =edRange.Find(what:='',searchformat:=True) If FirstCell Is Nothing ThenExit SubEnd IfSetAllCells = FirstCellSetFoundCell =FirstCellDoSet FoundCell = edRange.Find(After:=FoundCell,what:='', searchformat:=True)If FoundCell Is Nothing Then Exit DoSet AllCells = Union(FoundCell, AllCells)If FoundCell.Address = FirstCell.Address Then Exit DoLoopAllCells.SelectEnd Sub63、按当前单元文本定位Sub 按当前单元文本定位()ABC =SelectionDim aa AsRangeFor Eacha In edRangeIf a Like ABC ThenIf aa Is Nothing ThenSet aa = a.CellsElseSet aa = Union(aa, a.Cells)End IfEnd IfNextaa.SelectEnd Sub64、按固定文本定位Sub 文本定位()Dim aa AsRangeFor Eacha In edRange If a Like '*合计*' ThenIf aa Is Nothing ThenSet aa = a.CellsElseSet aa = Union(aa, a.Cells)End IfEnd IfNextaa.SelectEnd Sub65、删除包含固定文本单元的行或列Sub 删除包含固定文本单元的行或列() DoCells.Find(what:='哈哈').Activate Selection.EntireRow.Delete '删除行' Selection.EntireColumn.Delete '删除列LoopUntil Cells.Find(what:='哈哈') Is NothingEnd Sub66、定位数据及区域以上的空值Sub 定位数据及区域以上的空值()Dim aa As RangeFor Each a In edRangeIf a Like 〈0 ThenIf aa Is Nothing ThenSet aa = a.CellsElseSet aa = Union(aa, a.Cells)End IfEnd IfNextaa.SelectEnd Sub67、右侧单元自动加5(工作表代码)Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = FalseTarget.Offset(0, 1) = Target + 5Application.EnableEvents = TrueEnd Sub68、当前单元加2Sub 当前单元加2()Selection = Selection +2'Selection = Workbooks('临时表').Sheets('表2').Range('A1')调用指定地址内容EndSub69、A列等于A列减B列Sub A列等于A列减B列()For i = 1 To 23Cells(i, 1) = Cells(i, 1) - Cells(i, 2)NextEnd Sub70、用于光标选定多区域跳转指定单元(工作表代码)Private Sub Worksheet_SelectionChange(ByVal T As Range)a = Array([b6:b7], [e6], [h6])For i = 0 To 2If Not Application.Intersect(T, a(i)) Is Nothing Then[a1].Select: Exit ForEnd IfNextEnd Sub71、将A1单元录入的数据累加到B1单元(工作表代码)Private Sub Worksheet_Change(ByVal Target As Range)Dim t As LongIf Target.Address = '$A$1' Thent = Sheet1.Range('$B$1').ValueSheet1.Range('$B$1').Value = t + Target.ValueEnd IfEnd Sub72、在指定颜色区域选择单元时添加/取消'√'(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim myrgAs RangeFor Eachmyrg In TargetIf myrg.Interior.ColorIndex = 37 Then myrg = IIf(myrg<> '√', '√', '')NextEnd Sub73、在指定区域选择单元时添加/取消'√'(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim RngAs RangeIfTarget.Count <= 15 ThenIf Not Application.Intersect(Target, Range('D6:D20')) IsNothingThenFor Each Rng In SelectionWith RngIf .Value = '' Then.Value = '√'Else.Value = ''End IfEnd WithNextEndIfEndIfEnd Sub74、双击指定单元,循环录入文本(工作表代码)Private Sub Worksheet_BeforeDoubleClick(ByVal T As Range, CancelAs Boolean)If T.Address <> '$A$1' Then ExitSubCancel = TrueT = IIf(T = '好', '中', IIf(T = '中', '差', '好'))End Sub75、双击指定单元,循环录入文本(工作表代码)Dim nums As BytePrivate Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)If Target.Address = '$A$1' Thennums = nums Mod 3 + 1Target = Mid('上中下', nums, 1)Target.Offset(1, 0).SelectEnd IfEnd Sub76、单元区域引用(工作表代码)Private Sub Worksheet_Activate()Sheet1.Range('A1:B3').Value = Sheet2.Range('A1:B3').Value End Sub77、在指定区域选择单元时数值加1(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)If NotApplication.Intersect([a1:e10], T arget) Is Nothing Then Target = Val(Target) + 1EndIfEnd Sub259个常用宏-excelhome(3)2009-08-15 14:12:5878、混合文本的编号Sub 混合文本的编号()Worksheets(1).Range('B2').Value = '北京' &(--(Mid(Worksheets(1).Range('B2'), 3, 100)) + 1)End Sub79、指定区域单元双击数据累加(工作表代码)Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)If Not Application.Intersect([A1:Y100], Target) Is NothingThenoldvalue = Val(Target.Value)inputvalue = InputBox('请输入数量,按ENTER键确认!', '数值累加器')Target.Value = oldvalue + inputvalueEnd IfEnd Sub80、选择单元区域触发事件(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Target.Address = '$A$1:$B$2' ThenMsgBox'你选择了$A$1:$B$2单元'End IfEnd Sub81、当修改指定单元内容时自动执行宏(工作表代码)Private Sub Worksheet_Change(ByVal Target As Range)If Not Application.Intersect(Target, [B3:B4]) Is NothingThen 重排窗口End IfEnd Sub82、被指定单元内容限制执行宏Sub 被指定单元限制执行宏()If Range('$A$1') = '关闭' Then Exit Sub窗口End Sub83、双击单元隐藏该行(工作表代码)Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,Cancel As Boolean)Rows(Target.Row).Hidden = TrueEnd Sub84、高亮显示行(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target AsRange)Cells.Interior.ColorIndex = 2Rows('1:2').Interior.ColorIndex =40 '保持1至2行的颜色推荐39,22,40,Rows(Target.Row).Interior.ColorIndex =35 '高亮推荐颜色35,20,24,34,37,40,15End Sub85、高亮显示行和列(工作表代码)Private Sub Worksheet_SelectionChange(ByVal Target As Range)Cells.Interior.ColorIndex = xlNoneRows(Target.Row).Interior.ColorIndex = 34Columns(Target.Column).Interior.ColorIndex = 34End Sub86、为指定工作表设置滚动范围(工作簿代码)Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object,ByVal Target As Range)Sheet1.ScrollArea = 'A1:M30'End Sub87、在指定单元记录打印和预览次数(工作簿代码)Private Sub Workbook_BeforePrint(Cancel As Boolean)Range('A1') = 1 + Range('A1')End Sub88、自动数字金额转大写(工作表代码)Private Sub Worksheet_Change(ByVal M As Range)On Error Resume Nexty = Int(Round(100 * Abs(M)) / 100)j =Round(100 * Abs(M) + 0.00001) - y * 100f = (j /10 - Int(j / 10)) * 10A = IIf(y< 1, '', Application.Text(y, '[DBNum2]')& '元')b = IIf(j> 9.5, Application.Text(Int(j / 10), '[DBNum2]')& '角', IIf(y < 1, '', IIf(f> 1, '零', '')))c = IIf(f< 1, '整', Application.Text(Round(f, 0), '[DBNum2]')& '分')M =IIf(Abs(M) < 0.005, '', IIf(M < 0,'负' & A & b & c, A& b & c))End Sub89、将全部工作表的A1单元作为单击按钮(工作簿代码)Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object,ByVal Target As Range)If Target.Address = '$A$1' ThenCall宏名End IfEnd Sub。

Excel办公用宏大全

Excel办公用宏大全

宏文件集▲打开全部隐藏工作表返回Sub 打开全部隐藏工作表()Dim i As IntegerFor i = 1 To Sheets.CountSheets(i).Visible = TrueNext iEnd Sub▲循环宏返回Sub 循环()AAA = Range("C2")Dim i As LongDim times As Longtimes = AAA'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)For i = 1 To timesCall 过滤一行If Range("完成标志") = "完成" Then Exit For '如果名为'完成标志'的命名单元的值等于'完成',则退出循环,如果一开始就等于'完成',则 'If Sheets("传送参数").Range("A" & i).Text = "完成" Then Exit For '如果某列出现"完成"内容则退出循环Next iEnd Sub▲录制宏时调用“停止录制”工具栏返回Sub 录制宏时调用停止录制工具栏()mandBars("Stop Recording").Visible = TrueEnd Sub▲高级筛选5列不重复数据至指定表返回Sub 高级筛选5列不重复数据至Sheet2()Sheets("Sheet2").Range("A1:E65536") = "" '清除Sheet2的A:D列Range("A1:E65536").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheet2.Range( _"A1"), Unique:=TrueSheet2.Columns("A:E").Sort Key1:=Sheet2.Range("A2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _:=xlPinYinEnd Sub▲双击单元执行宏(工作表代码)返回Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)If Range("$A$1") = "关闭" Then Exit SubSelect Case Target.AddressCase "$A$4"Call 宏1Cancel = TrueCase "$B$4"Call 宏2Cancel = TrueCase "$C$4"Call 宏3Cancel = TrueCase "$E$4"Call 宏4Cancel = TrueEnd SelectEnd Sub▲双击指定区域单元执行宏(工作表代码)返回Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)If Range("$A$1") = "关闭" Then Exit SubIf Not Application.Intersect(Target, Range("A4:A9", "C4:C9")) Is Nothing Then Call 打开隐藏表End Sub▲进入单元执行宏(工作表代码)返回'以单元格进入代替按钮对象调用宏If Range("$A$1") = "关闭" Then Exit SubSelect Case Target.AddressCase "$A$5" '单元地址(Target.Address),或命名单元名字()Call 宏1Case "$B$5"Call 宏2Case "$C$5"Call 宏3End SelectEnd Sub▲进入指定区域单元执行宏(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Range("$A$1") = "关闭" Then Exit SubIf Not Application.Intersect(Target, Range("A4:A9","C4:C9")) Is Nothing Then Call 打开隐藏表End Sub▲在多个宏中依次循环执行一个(控件按钮代码)返回Private Sub CommandButton1_Click()Static RunMacro As IntegerSelect Case RunMacroCase 0宏1RunMacro = 1Case 1宏2RunMacro = 2Case 2宏3RunMacro = 0End SelectEnd Sub▲在两个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)返回Private Sub CommandButton1_Click()With CommandButton1If .Caption = "保护工作表" ThenCall 保护工作表.Caption = "取消工作表保护"Exit SubEnd IfIf .Caption = "取消工作表保护" ThenCall 取消工作表保护.Caption = "保护工作表"Exit SubEnd IfEnd WithEnd Sub▲在三个宏中依次循环执行一个并相应修改按钮名称(控件按钮代码)返回Option ExplicitPrivate Sub CommandButton1_Click()With CommandButton1If .Caption = "宏1" ThenCall 宏1.Caption = "宏2"Exit SubEnd IfIf .Caption = "宏2" ThenCall 宏2.Caption = "宏3"Exit SubEnd IfIf .Caption = "宏3" ThenCall 宏3.Caption = "宏1"End IfEnd WithEnd Sub▲根据A1单元文本隐藏/显示按钮(控件按钮代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Range("A1") > 2 ThenCommandButton1.Visible = 1ElseCommandButton1.Visible = 0End IfEnd SubPrivate Sub CommandButton1_Click()重排窗口End Sub▲当前单元返回按钮名称(控件按钮代码)返回Private Sub CommandButton1_Click()ActiveCell = CommandButton1.CaptionEnd Sub▲当前单元内容返回到按钮名称(控件按钮代码)返回Private Sub CommandButton1_Click()CommandButton1.Caption = ActiveCellEnd Sub▲奇偶页分别打印返回Sub 奇偶页分别打印()Dim i%, Ps%Ps = ExecuteExcel4Macro("GET.DOCUMENT(50)") '总页数MsgBox "现在打印奇数页,按确定开始."ActiveSheet.PrintOut from:=i, To:=iNext iMsgBox "现在打印偶数页,按确定开始."For i = 2 To Ps Step 2ActiveSheet.PrintOut from:=i, To:=iNext iEnd Sub▲自动打印多工作表第一页返回Sub 自动打印多工作表第一页()Dim sh As IntegerDim xDim yDim syDim syzx = InputBox("请输入起始工作表名字:")sy = InputBox("请输入结束工作表名字:")y = Sheets(x).Indexsyz = Sheets(sy).IndexFor sh = y To syzSheets(sh).SelectSheets(sh).PrintOut from:=1, To:=1Next shEnd Sub▲查找A列文本循环插入分页符返回Sub 循环插入分页符()' Selection = Workbooks("临时表").Sheets("表2").Range("A1") 调用指定地址内容Dim i As LongDim times As Longtimes = Application.WorksheetFunction.CountIf(Sheet1.Range("a:a"), "分页")'times代表循环次数,执行前把times赋值即可(不可小于1,不可大于2147483647)Call 插入分页符Next iEnd SubSub 插入分页符()Cells.Find(What:="分页", After:=ActiveCell, LookIn:=xlValues, LookAt:= _xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _ .ActivateActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCellEnd SubSub 取消原分页()Cells.SelectActiveSheet.ResetAllPageBreaksEnd Sub▲将A列最后数据行以上的所有B列图片大小调整为所在单元大小返回Sub 将A列最后数据行以上的所有B列图片大小调整为所在单元大小()Dim Pic As Picture, i&i = [A65536].End(xlUp).RowFor Each Pic In Sheet1.PicturesIf Not Application.Intersect(Pic.TopLeftCell, Range("B1:B" & i)) Is Nothing Then Pic.Top = Pic.TopLeftCell.TopPic.Left = Pic.TopLeftCell.LeftPic.Height = Pic.TopLeftCell.HeightPic.Width = Pic.TopLeftCell.WidthEnd IfNextEnd Sub▲返回光标所在行数返回Sub 返回光标所在行数()x = ActiveCell.RowEnd Sub▲在A1返回当前选中单元格数量返回Sub 在A1返回当前选中单元格数量()[A1] = Selection.CountEnd Sub▲返回当前工作簿中工作表数量返回Sub 返回当前工作簿中工作表数量()t = Application.Sheets.CountMsgBox tEnd Sub▲返回光标选择区域的行数和列数返回Sub 返回光标选择区域的行数和列数()x = Selection.Rows.County = Selection.Columns.CountRange("A1") = xRange("A2") = yEnd Sub▲工作表中包含数据的最大行数返回Sub 包含数据的最大行数()n = Cells.Find("*", , , , 1, 2).RowMsgBox nEnd Sub▲返回A列数据的最大行数返回Sub 返回A列数据的最大行数()n = Range("a65536").End(xlUp).RowRange("B1") = nEnd SubSub 将所选区域文本插入新建文本框()For Each rag In Selectionn = n & rag.Value & Chr(10)NextActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, ActiveCell.Left + ActiveCell.Width, ActiveCell.Top + ActiveCell.Selection.Characters.Text = "问题:" & nWith Selection.Characters(Start:=1, Length:=3).Font.Name = "黑体".FontStyle = "常规".Size = 12End WithEnd Sub▲批量插入地址批注返回Sub 批量插入地址批注()On Error Resume NextDim r As RangeIf Selection.Cells.Count > 0 ThenFor Each r In Selectionment.Deleter.AddCommentment.Visible = Falsement.Text Text:="本单元格:" & r.Address & " of " & Selection.AddressNextEnd IfEnd Sub▲批量插入统一批注返回Sub 批量插入统一批注()Dim r As Range, msg As Stringmsg = InputBox("请输入欲批量插入的批注", "提示", "随便输点什么吧")If Selection.Cells.Count > 0 ThenFor Each r In Selectionment.Visible = Falsement.Text Text:=msgNextEnd IfEnd Sub▲以A1单元内容批量插入批注返回Sub 以A1单元内容批量插入批注()Dim r As RangeIf Selection.Cells.Count > 0 ThenFor Each r In Selectionr.AddCommentment.Visible = Falsement.Text Text:=[a1].TextNextEnd IfEnd Sub▲不连续区域插入当前文件名和表名及地址返回Sub 批量插入当前文件名和表名及地址()For Each mycell In Selectionmycell.FormulaR1C1 = "[" + + "]" + + "!" + mycell.Address NextEnd Sub▲不连续区域录入当前单元地址返回Sub 区域录入当前单元地址()For Each mycell In Selectionmycell.FormulaR1C1 = mycell.AddressNextEnd Sub▲连续区域录入当前单元地址返回Selection = "=ADDRESS(ROW(),COLUMN(),4,1)"Selection.CopySelection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=FalseEnd Sub▲返回当前单元地址返回Sub 返回当前单元地址()d = ActiveCell.Address[A1] = dEnd Sub▲不连续区域录入当前日期返回Sub 区域录入当前日期()Selection.FormulaR1C1 = Format(Now(), "yyyy-m-d")End Sub▲不连续区域录入当前数字日期返回Sub 区域录入当前数字日期()Selection.FormulaR1C1 = Format(Now(), "yyyymmdd")End Sub▲不连续区域录入当前日期和时间返回Sub 区域录入当前日期和时间()Selection.FormulaR1C1 = Format(Now(), "yyyy-m-d h:mm:ss")End Sub▲不连续区域录入对勾返回Sub 批量录入对勾()Selection.FormulaR1C1 = "√"End Sub▲不连续区域录入当前文件名返回Sub 批量录入当前文件名()Selection.FormulaR1C1 = End Sub▲不连续区域添加文本返回Sub 批量添加文本()Dim s As RangeFor Each s In Selections = s & "文本内容"NextEnd Sub▲不连续区域插入文本返回Sub 批量插入文本()Dim s As RangeFor Each s In Selections = "文本内容" & sNextEnd Sub▲从指定位置向下同时录入多单元指定内容返回Sub 从指定位置向下同时录入多单元指定内容()Dim arrarr = Array("1", "2", "13", "25", "46", "12", "0", "20")[B2].Resize(8, 1) = Application.WorksheetFunction.Transpose(arr)End Sub▲按aa工作表A列的内容排列工作表标签顺序返回Sub 按aa工作表A列的内容排列工作表标签顺序()Dim I%, str1$I = 1Sheets("aa").SelectDo While Cells(I, 1).Value <> ""str1 = Trim(Cells(I, 1).Value)Sheets(str1).SelectSheets(str1).Move after:=Sheets(I)I = I + 1Sheets("aa").SelectLoopEnd Sub▲以A1单元文本作表名插入工作表返回Sub 以A1单元文本作表名插入工作表()Dim nm As Stringnm = [a1]Sheets.Add = nmEnd Sub▲删除全部未选定工作表返回Sub 删除全部未选定工作表()Dim sht As Worksheet, n As Integer, iFlag As BooleanDim ShtName() As Stringn = ActiveWindow.SelectedSheets.CountReDim ShtName(1 To n)n = 1For Each sht In ActiveWindow.SelectedSheetsShtName(n) = n = n + 1NextApplication.DisplayAlerts = FalseFor Each sht In SheetsiFlag = FalseFor i = 1 To n - 1If ShtName(i) = TheniFlag = TrueExit ForEnd IfNextIf Not iFlag Then sht.DeleteNextApplication.DisplayAlerts = TrueEnd Sub▲工作表标签排序返回Sub 工作表标签排序()Dim i As Long, j As Long, nums As Long, msg As Longmsg = MsgBox("工作表按升序排列请选 '是[Y]'. " & vbCrLf & vbCrLf & "工作表按降序排列请选 '否[N]'", vbYesNoCancel, "工作表排序") If msg = vbCancel Then Exit Subnums = Sheets.CountIf msg = vbYes Then 'Sort ascendingFor i = 1 To numsFor j = i To numsIf UCase(Sheets(j).Name) < UCase(Sheets(i).Name) ThenSheets(j).Move Before:=Sheets(i)End IfNext jNext iElse 'Sort descendingFor i = 1 To numsFor j = i To numsIf UCase(Sheets(j).Name) > UCase(Sheets(i).Name) ThenSheets(j).Move Before:=Sheets(i)End IfNext jNext iEnd IfEnd Sub▲定义指定工作表标签颜色返回Sub 定义指定工作表标签颜色()Sheets("Sheet1").Tab.ColorIndex = 46End Sub▲在目录表建立本工作簿中各表链接目录返回Sub 在目录表建立本工作簿中各表链接目录()Dim s%, Rng As RangeOn Error Resume NextSheets("目录").ActivateIf Err = 0 ThenSheets("目录").UsedRange.DeleteElseSheets.Add = "目录"End IfFor i = 1 To Sheets.CountIf Sheets(i).Name <> "目录" Thens = s + 1Set Rng = Sheets("目录").Cells(((s - 1) Mod 20) + 1, (s - 1) \ 20 + 1 + 1)Rng = Format(s, " 0") & ". " & Sheets(i).NameActiveSheet.Hyperlinks.Add Rng, "#" & Sheets(i).Name & "!A1", ScreenTip:=Sheets(i).Name End IfNextSheets("目录").Range("b:iv").EntireColumn.ColumnWidth = 20End Sub▲建立工作表文本目录返回Sub 建立工作表文本目录()Sheets.Add before:=Sheets(1)Sheets(1).Name = "目录"For i = 2 To Sheets.CountCells(i - 1, 1) = Sheets(i).Name'Sheets(1).Hyperlinks.Add Cells(i - 1, 1), "#" & Sheets(i).Name & "!A1" '添加超链接NextEnd Sub▲查另一文件的全部表名返回Sub 查另一文件的全部表名()On Error Resume NextDim i%Dim sh As WorksheetApplication.ScreenUpdating = FalseWorkbooks.Open Filename:=ThisWorkbook.Path & "\2.xls"Windows("1.xls").Activate '当前文件名称Sheets("Sheet1").Select '当前表名称i = 1 '将表名称返回到第1行For Each sh In Workbooks("2.xls").WorksheetsCells(i, 1) = '将表名称返回到第1列i = i + 1 '返回每个表名称向下移动1行Next shWindows("2.xls").Close '关闭对象文件Application.ScreenUpdating = TrueEnd Sub▲当前单元录入计算机名返回Sub 当前单元录入计算机名()Selection = Environ("COMPUTERNAME")'Selection = Workbooks("临时表").Sheets("表2").Range("A1") 调用指定地址内容End Sub▲当前单元录入计算机用户名返回 Sub 当前单元录入计算机用户名()Selection = Environ("Username")'Selection = Workbooks("临时表").Sheets("表2").Range("A1") 调用指定地址内容End Sub▲解除全部工作表保护返回Sub 解除全部工作表保护()Dim n As IntegerFor n = 1 To Sheets.CountSheets(n).UnprotectNext nEnd Sub▲为指定工作表加指定密码保护表返回Sub 为指定工作表加指定密码保护表()Sheet10.Protect Password:="123"End Sub▲在有密码的工作表执行代码返回Sub 在有密码的工作表执行代码()Sheets("1").Unprotect Password:=123 '假定表名为“1”,密码为“123” 打开工作表Range("C:C").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True '隐藏C列空值行Sheets("1").Protect Password:=123 '重新用密码保护工作表End Sub▲执行前需要验证密码的宏(控件按钮代码)返回Private Sub CommandButton1_Click()If InputBox("请输入密码:") <> "123" Then '密码是123MsgBox "密码错误,按确定退出!", 64, "提示"Exit SubEnd IfCells(1, 1) = 10End SubSub 执行前需要验证密码的宏()If InputBox("请输入您的使用权限:", "系统提示") = 123 Then重排窗口 '要执行的宏代码或宏名称ElseMsgBox "对不起,您没有使用该宏的权限,按确定键后退出!"End IfEnd Sub▲拷贝A1公式和格式到A2返回Sub 拷贝A1公式到A2()Workbooks("临时表").Sheets("表1").Range("A1").CopyWorkbooks("临时表").Sheets("表2").Range("A2").PasteSpecialEnd Sub▲复制单元数值返回Sub 复制数值()s = Workbooks("book1").Sheets("Sheet1").Range("A1:A2")Workbooks("book2").Sheets("Sheet1").Range("A1:A2") = sEnd Sub▲插入数值条件格式返回Sub 插入数值条件格式()Selection.FormatConditions.DeleteSelection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _Formula1:="70"Selection.FormatConditions(1).Interior.ColorIndex = 45Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _Formula1:="55"Selection.FormatConditions(2).Interior.ColorIndex = 39Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _Formula1:="60"Selection.FormatConditions(3).Interior.ColorIndex = 34End Sub▲插入透明批注返回Sub 插入透明批注()Selection.AddCommentment.Visible = FalseDim XS As WorksheetFor i = 1 To ments.Countments(i).Text "透明批注"ments(i).Shape.Fill.Visible = msoFalseNextEnd Sub▲添加文本返回Sub 添加文本()Selection = Selection + "×" '不可在数字后添加文本'Selection = Workbooks("临时表").Sheets("表2").Range("A1") 调用指定地址内容End Sub▲光标定位到指定工作表A列最后数据行下一单元返回Sub 光标定位到指定工作表A列最后数据行下一单元()a = Sheets("数据库").[a65536].End(xlUp).RowSheets("数据库").SelectRange("A" & a + 1).SelectEnd Sub▲定位选定单元格式相同的全部单元格返回Sub 定位选定单元格式相同的全部单元格()Dim FirstCell As Range, FoundCell As RangeDim AllCells As RangeWith 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.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.FormulaHiddenEnd WithSet FirstCell = edRange.Find(what:="", searchformat:=True)If FirstCell Is Nothing ThenExit SubEnd IfSet AllCells = FirstCellSet FoundCell = FirstCellDoSet FoundCell = edRange.Find(After:=FoundCell, what:="", searchformat:=True) If FoundCell Is Nothing Then Exit DoSet AllCells = Union(FoundCell, AllCells)If FoundCell.Address = FirstCell.Address Then Exit DoLoopAllCells.SelectEnd Sub▲按当前单元文本定位返回Sub 按当前单元文本定位()ABC = SelectionDim aa As RangeFor Each a In edRangeIf a Like ABC ThenIf aa Is Nothing ThenSet aa = a.CellsElseSet aa = Union(aa, a.Cells)End IfEnd IfNextaa.SelectEnd Sub▲按固定文本定位返回Sub 文本定位()Dim aa As RangeFor Each a In edRangeIf a Like "*合计*" ThenIf aa Is Nothing ThenSet aa = a.CellsElseSet aa = Union(aa, a.Cells)End IfEnd IfNextaa.SelectEnd Sub▲删除包含固定文本单元的行或列返回Sub 删除包含固定文本单元的行或列()DoCells.Find(what:="哈哈").ActivateSelection.EntireRow.Delete '删除行' Selection.EntireColumn.Delete '删除列Loop Until Cells.Find(what:="哈哈") Is NothingEnd Sub▲定位数据及区域以上的空值返回Sub 定位数据及区域以上的空值()Dim aa As RangeFor Each a In edRangeIf a Like 〈0 ThenIf aa Is Nothing ThenSet aa = a.CellsElseSet aa = Union(aa, a.Cells)End IfEnd IfNextaa.SelectEnd Sub▲右侧单元自动加5(工作表代码)返回Private Sub Worksheet_Change(ByVal Target As Range)Application.EnableEvents = FalseTarget.Offset(0, 1) = Target + 5Application.EnableEvents = TrueEnd Sub▲当前单元加2返回Sub 当前单元加2()Selection = Selection + 2'Selection = Workbooks("临时表").Sheets("表2").Range("A1") 调用指定地址内容End Sub▲A列等于A列减B列返回Sub A列等于A列减B列()For i = 1 To 23Cells(i, 1) = Cells(i, 1) - Cells(i, 2)NextEnd Sub▲用于光标选定多区域跳转指定单元(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal T As Range)a = Array([b6:b7], [e6], [h6])For i = 0 To 2If Not Application.Intersect(T, a(i)) Is Nothing Then[a1].Select: Exit ForEnd IfNextEnd Sub▲将A1单元录入的数据累加到B1单元(工作表代码)返回Private Sub Worksheet_Change(ByVal Target As Range)Dim t As LongIf Target.Address = "$A$1" Thent = Sheet1.Range("$B$1").ValueSheet1.Range("$B$1").Value = t + Target.ValueEnd IfEnd Sub▲在指定颜色区域选择单元时添加/取消"√"(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim myrg As RangeFor Each myrg In TargetIf myrg.Interior.ColorIndex = 37 Then myrg = IIf(myrg <> "√", "√", "")NextEnd Sub▲在指定区域选择单元时添加/取消"√"(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim Rng As RangeIf Target.Count <= 15 ThenIf Not Application.Intersect(Target, Range("D6:D20")) Is Nothing ThenFor Each Rng In SelectionWith RngIf .Value = "" Then.Value = "√"Else.Value = ""End IfEnd WithNextEnd IfEnd IfEnd Sub▲双击指定单元,循环录入文本(工作表代码)返回Private Sub Worksheet_BeforeDoubleClick(ByVal T As Range, Cancel As Boolean)If T.Address <> "$A$1" Then Exit SubCancel = TrueT = IIf(T = "好", "中", IIf(T = "中", "差", "好"))End Sub双击指定单元,循环录入文本(工作表代码)Dim nums As BytePrivate Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)If Target.Address = "$A$1" Thennums = nums Mod 3 + 1Target = Mid("上中下", nums, 1)Target.Offset(1, 0).SelectEnd IfEnd Sub▲单元区域引用(工作表代码)返回Private Sub Worksheet_Activate()Sheet1.Range("A1:B3").Value = Sheet2.Range("A1:B3").ValueEnd Sub▲在指定区域选择单元时数值加1(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Not Application.Intersect([a1:e10], Target) Is Nothing ThenTarget = Val(Target) + 1End IfEnd Sub▲混合文本的编号返回Sub 混合文本的编号()Worksheets(1).Range("B2").Value = "北京" & (--(Mid(Worksheets(1).Range("B2"), 3, 100)) + 1) End Sub▲指定区域单元双击数据累加(工作表代码)返回Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)If Not Application.Intersect([A1:Y100], Target) Is Nothing Thenoldvalue = Val(Target.Value)inputvalue = InputBox("请输入数量,按ENTER键确认!", "数值累加器")Target.Value = oldvalue + inputvalueEnd IfEnd Sub▲选择单元区域触发事件(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Target.Address = "$A$1:$B$2" ThenMsgBox "你选择了$A$1:$B$2单元"End IfEnd Sub▲当修改指定单元内容时自动执行宏(工作表代码)返回Private Sub Worksheet_Change(ByVal Target As Range)If Not Application.Intersect(Target, [B3:B4]) Is Nothing Then重排窗口End IfEnd Sub▲被指定单元内容限制执行宏返回Sub 被指定单元限制执行宏()If Range("$A$1") = "关闭" Then Exit Sub窗口End Sub▲双击单元隐藏该行(工作表代码)返回Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)Rows(Target.Row).Hidden = TrueEnd Sub▲高亮显示行(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)Cells.Interior.ColorIndex = 2Rows("1:2").Interior.ColorIndex = 40 '保持1至2行的颜色推荐39,22,40,Rows(Target.Row).Interior.ColorIndex = 35 '高亮推荐颜色35,20,24,34,37,40,15End Sub▲高亮显示行和列(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal Target As Range)Cells.Interior.ColorIndex = xlNoneRows(Target.Row).Interior.ColorIndex = 34Columns(Target.Column).Interior.ColorIndex = 34End Sub▲为指定工作表设置滚动范围(工作簿代码)返回Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)Sheet1.ScrollArea = "A1:M30"End Sub▲在指定单元记录打印和预览次数(工作簿代码)返回Private Sub Workbook_BeforePrint(Cancel As Boolean)Range("A1") = 1 + Range("A1")End Sub▲自动数字金额转大写(工作表代码)返回Private Sub Worksheet_Change(ByVal M As Range)On Error Resume Nexty = Int(Round(100 * Abs(M)) / 100)j = Round(100 * Abs(M) + 0.00001) - y * 100f = (j / 10 - Int(j / 10)) * 10A = IIf(y < 1, "", Application.Text(y, "[DBNum2]") & "元")b = IIf(j > 9.5, Application.Text(Int(j / 10), "[DBNum2]") & "角", IIf(y < 1, "", IIf(f > 1, "零", "")))c = IIf(f < 1, "整", Application.Text(Round(f, 0), "[DBNum2]") & "分")M = IIf(Abs(M) < 0.005, "", IIf(M < 0, "负" & A & b & c, A & b & c))End Sub▲将全部工作表的A1单元作为单击按钮(工作簿代码)返回Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)If Target.Address = "$A$1" ThenCall 宏名End IfEnd Sub▲闹钟——到指定时间执行宏(工作簿代码)返回Private Sub Workbook_Open()Application.OnTime ("11:45:00"), "提示1" '宏名字Application.OnTime ("12:00:00"), "提示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").Range("A1") = Target.Address(0, 0)End Sub▲B列录入数据时在A列返回记录时间(工作表代码)返回Public Sub Worksheet_Change(ByVal Target As Range)If Target.Column = 2 ThenTarget.Offset(, -1) = NowEnd IfEnd Sub▲当指定区域修改时在其右侧的2个单元返回当前日期和时间(工作表代码)返回Public Sub Worksheet_Change(ByVal Target As Range)If Not Application.Intersect(Target, [A1:A1000]) Is Nothing ThenIf Target.Column = 1 ThenTarget.Offset(, 1) = DateTarget.Offset(, 2) = TimeEnd IfEnd IfEnd SubPublic Sub Worksheet_Change(ByVal Target As Range)If Not Application.Intersect(Target, [A1:A1000]) Is Nothing ThenIf Target.Column = 1 ThenTarget.Offset(, 1) = Format(Now(), "yyyy-mm-dd")Target.Offset(, 2) = Format(Now(), "h:mm:ss")End IfEnd IfEnd Sub▲指定单元显示光标位置内容(工作表代码)返回Private Sub Worksheet_SelectionChange(ByVal T As Range)Sheets(1).Range("A1") = SelectionEnd Sub▲每编辑一个单元保存文件返回Private Sub Worksheet_Change(ByVal Target As Range)ThisWorkbook.SaveEnd Sub▲指定允许编辑区域返回Sub 指定允许编辑区域()ActiveSheet.ScrollArea = "B8:G15"End Sub▲解除允许编辑区域限制返回Sub 解除允许编辑区域限制()ActiveSheet.ScrollArea = ""End Sub▲删除指定行返回Sub 删除指定行()Workbooks("临时表").Sheets("表2").Range("5:5").DeleteEnd Sub▲删除A列为指定内容的行返回Sub 删除A列为指定内容的行()Dim a, b As Integera = Sheet1.[a65536].End(xlUp).RowFor b = a To 2 Step -1If Cells(b, 1).Value = "删除" ThenRows(b).DeleteEnd IfNextEnd Sub▲删除A列非数字单元行返回Sub 删除A列非数字单元行()i = [a65536].End(xlUp).RowRange("A1:A" & i).SpecialCells(xlCellTypeConstants, 2).EntireRow.DeleteEnd Sub▲有条件删除当前行返回Sub 有条件删除当前行()If [A1] = 2 Or [B1] = "删除" ThenSelection.Delete Shift:=xlUpEnd IfEnd Sub▲选择下一行返回Sub 选择下一行()ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.SelectEnd Sub▲选择第5行开始所有数据行返回Sub 选择第5行开始所有数据行A()Dim i%i = Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious).EntireRow.RowRows("5:" & i).SelectEnd SubSub 选择第5行开始所有数据行B()Rows("5:" & Cells.Find("*", , , , 1, 2).Row).SelectEnd Sub▲选择光标或选区所在行返回Sub 选择光标或选区所在行()Selection.EntireRow.SelectEnd Sub▲选择光标或选区所在列返回Sub 选择光标或选区所在列()Selection.EntireColumn.SelectEnd Sub▲光标定位到名称指定位置返回Sub 定位()Application.Goto Range(Evaluate("名称"))End Sub▲选择名称定义的数据区返回Sub 选择名称定义的数据区()[数据区].Select '插入名称要使用INDIRECT函数'Range("数据区").Select 或者'Sheet1.Range("数据区").Select 或者End Sub▲选择到指定列的最后行返回Sub 选择到指定列的最后行()Range("C4:G" & [G65536].End(xlUp).Row).SelectEnd Sub▲将Sheet1的A列的非空值写到Sheet2的A列返回Sub 将Sheet1的A列的非空值写到Sheet2的A列()Sheet1.Columns("A:A").SpecialCells(2, 23).SpecialCells(12).Copy Sheet2.[A1]End Sub▲将名称1的数据写到名称2返回Sub Macro2()Range("位置2") = Range("位置1").ValueEnd Sub▲单元反选返回Sub 单元反选()Application.DisplayAlerts = FalseApplication.ScreenUpdating = FalseDim raddress As String, taddress As Stringraddress = Selection.Addresstaddress = edRange.AddressWith Sheets.Add.Range(taddress) = 0.Range(raddress) = "=0"raddress = .Range(taddress).SpecialCells(xlCellTypeConstants, 1).Address.DeleteEnd WithActiveSheet.Range(raddress).SelectApplication.ScreenUpdating = TrueEnd Sub▲调整选中对象中的文字返回Sub 调整选中对象中的文字()'文字居中、自动调整大小With Selection.HorizontalAlignment = xlCenter.VerticalAlignment = xlCenter.ReadingOrder = xlContext.Orientation = xlHorizontal.AutoSize = True.AddIndent = FalseEnd WithEnd Sub▲去除指定范围内的对象返回Sub 去除指定范围内的对象()Dim p As ShapeSet My = Worksheets("工作表名")For Each p In My.ShapesIf Not Application.Intersect(p.TopLeftCell, Range("范围")) Is Nothing Then p.Delete NextEnd Sub▲更新透视表数据项返回Sub DeleteMissingItems2002All()'防止数据透视表中显示无用的数据项'在 Excel 2002 或更高版本中'如果无用的数据项已经存在,'运行这个宏可以更新Dim pt As PivotTableDim ws As WorksheetFor Each ws In ActiveWorkbook.WorksheetsFor Each pt In ws.PivotTablespt.PivotCache.MissingItemsLimit = xlMissingItemsNoneNext ptNext wsEnd Sub▲将全部工作表名称写到A列返回Sub 将全部表名称写到A列()k = 1For Each Sht In SheetsCells(k + 1, 1) = '指定写入的行和列。

Excel的宏的实际应用案例

Excel的宏的实际应用案例

Excel的宏的实际应用案例在Excel中,宏是一种自动化操作的功能,可以帮助我们提高工作效率,简化重复性的任务。

下面将介绍几个实际应用案例,展示Excel 宏的强大功能。

案例一:数据分析与报表生成在工作中,我们经常需要对大量的数据进行分析,并生成相应的报表。

借助Excel的宏,可以快速地完成这项任务。

首先,我们可以录制一个宏来实现数据的筛选和排序功能。

以商品销售数据为例,我们可以使用宏实现根据不同的条件筛选数据,并按照销售额进行排序,从而方便地找到目标数据。

其次,我们可以利用宏来生成报表。

通过录制宏,可以自动化地生成各类图表和统计数据,例如销售额的折线图、柱状图等,从而更直观地呈现数据分析结果。

案例二:数据清洗与格式转换在 Excel 中,经常需要处理大量的数据,其中包含着各种各样的问题,如重复数据、不一致的命名规范、日期格式不一致等。

通过宏的应用,可以快速进行数据清洗和格式转换。

首先,我们可以录制宏来删除重复数据。

通过宏的功能,可以去除表格中的重复数据,保持数据的完整性和准确性。

其次,我们可以利用宏来统一命名规范。

通过宏的应用,可以将不一致的命名规范统一为统一的格式,从而方便后续的数据处理和分析。

此外,我们还可以利用宏来进行日期格式的转换。

在实际工作中,不同人员使用不同的日期格式,这给数据处理和分析带来了一定的困扰。

通过宏的编写,可以将不同格式的日期统一转换为特定的日期格式,提高数据的可操作性和比较性。

案例三:自动化数据录入在大量数据录入的场景下,借助Excel的宏功能,可以实现数据的快速录入和自动校验。

我们可以编写宏来实现数据的自动填充。

以客户名录入为例,通过宏的应用,可以自动从预设的客户列表中选择客户名,避免了重复输入和误输入。

同时,我们还可以借助宏来实现数据的自动校验。

通过宏编写,可以实现数据的规范性和合法性校验,保证数据的准确性和完整性。

综上所述,Excel的宏在实际工作中有着广泛的应用。

Excel常见宏(简洁版)

Excel常见宏(简洁版)

Excel常见宏(简洁版)清除剪贴板Sub 清除剪贴板()Application.CutCopyMode = FalsemandBars(\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 IntegerFor x = 1 To Workbooks.CountIf Workbooks(x).Name = \函数.xls\ '文件名称 MsgBox \文件已打开\ Exit Sub End If NextMsgBox \文件未打开\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.CopyActiveWorkbook.SaveAs Filename:= & \End Sub以活动工作表名称另存文件到Excel当前默认目录Sub 以活动工作表名称另存文件到Excel当前默认目录()ActiveWorkbook.SaveAs Filename:= & \xlNormal, Password:=\ , CreateBackup:=False End Sub另存所有工作表为工作簿Sub 另存所有工作表为工作簿() Dim sht As WorksheetApplication.ScreenUpdating = False ipath = ThisWorkbook.Path & \For Each sht In Sheets sht.CopyActiveWorkbook.SaveAs ipath & & \工作表名称为文件名)'ActiveWorkbook.SaveAs ipath & & Trim(sht.[d15]) & \(文件名称 & D15单元内容)'ActiveWorkbook.SaveAs ipath & Trim(sht.[d15]) & \ '(文件名称为D15单元内容) ActiveWorkbook.Close NextApplication.ScreenUpdating = True End Sub以指定单元内容为新文件名另存文件Sub 以指定单元内容为新文件名另存文件()ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & \End Sub以当前日期为新文件名另存文件Sub 以当前日期为新文件名另存文件()ThisWorkbook.SaveAs ThisWorkbook.Path & \End SubSub 以当前日期为名称另存文件()ActiveWorkbook.SaveAs Filename:=Date & \ End Sub以当前日期和时间为新文件名另存文件Sub 以当前日期和时间为新文件名另存文件()ThisWorkbook.SaveAs ThisWorkbook.Path & \年\月\日\时\分\秒\End Sub另存本表为TXT文件Sub 另存本表为TXT文件() Dim s As StringDim FullName As String, rng As Range Application.ScreenUpdating = FalseFullName = ( & \ '以当前表名为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 NextClose #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 xRange(\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).CutRows(i - 1).Insert Shift:=xlDown End If End Sub加数据有效限制Sub 加数据有效限制()With Selection.Validation .Delete.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=\bigsun010@\ .IgnoreBlank =False .InCellDropdown = False .InputTitle =\ .ErrorTitle = \ .InputMessage = \.ErrorMessage = \要奋斗就会有牺牲,死人的事是经常发生的。

提高工作效率的Excel自动化技巧宏和公式

提高工作效率的Excel自动化技巧宏和公式

提高工作效率的Excel自动化技巧宏和公式Excel作为一款功能强大的电子表格软件,常被广泛应用于各行各业。

熟练掌握Excel自动化技巧宏和公式,可大幅提高工作效率。

本文将为大家介绍一些实用的Excel自动化技巧宏和公式,帮助大家更好地利用Excel完成各种工作任务。

一、快捷键的使用学会使用快捷键可大大提高Excel操作的速度和效率。

以下是一些常用的Excel快捷键:1. Ctrl+C:复制选中的单元格或文本;2. Ctrl+V:粘贴复制的内容;3. Ctrl+X:剪切选中的单元格或文本;4. Ctrl+Z:撤销上一次操作;5. Ctrl+A:选中当前工作表的所有数据;6. Ctrl+S:保存当前工作簿;7. Ctrl+B:将选中的单元格内容加粗;8. Ctrl+I:将选中的单元格内容斜体;9. Ctrl+U:给选中的单元格内容添加下划线。

通过熟练掌握快捷键的使用,可以极大地提高Excel操作的效率。

二、宏的应用宏是一系列的操作指令录制成的程序,通过宏的运行可以实现批量处理大量数据的自动化操作。

以下是一些常用的Excel宏的应用:1. 数据筛选:录制一个宏来实现数据筛选的操作,可以大大缩短筛选时间,提高工作效率;2. 单元格格式设定:录制一个宏来自动设置单元格的格式,可以实现对大量数据的快速格式设定;3. 数据整理:录制一个宏来实现数据整理的操作,在数据量较大的情况下,可以节省大量的时间和精力;4. 制表过程:录制一个宏来实现制表过程的自动化操作,可以将复杂的制表过程简化,提高工作效率;5. 数据填充:录制一个宏来实现数据填充的操作,可以快速填充大量的数据,减少手动输入的繁琐。

通过宏的应用,可以将大量重复繁琐的工作自动化,极大地提高工作效率。

三、公式的运用Excel的公式功能为数据分析和计算提供了很大的便利。

以下是一些常用的Excel公式的运用:1. SUM函数:用于计算选定区域中的数值之和;2. AVERAGE函数:用于计算选定区域中的数值的平均值;3. COUNT函数:用于计算选定区域中的数值的个数;4. MAX函数:用于计算选定区域中的最大数值;5. MIN函数:用于计算选定区域中的最小数值;6. IF函数:用于对选定条件进行判断,然后执行相应的操作;7. VLOOKUP函数:用于在指定区域中查找指定值,并返回与之对应的值。

excel宏应用实例

excel宏应用实例

excel宏应用实例
1、记录称重数据,使用计算机自带的Excel表格工具,可以记录每日的称重数据。

在系统中添加一个用以统计今日称重的宏命令,当称重过程发出报警信号后,宏就会立即
被执行,将每日称重数据存储到对应的表格,从而可以轻松记录所有称重数据,编制出报
表进行统计分析。

2、用Excel制作课表,节约每周工作时间。

使用Excel表格,可以预先设定每周上
课时间,然后使用宏命令,根据输入的课程和上课老师,自动生成每周的教学计划,并规
划出各科目的上课安排和上课地点,大大的节约了每周的工作时间。

3、仓储进出货管理,使用宏命令实现订单登记功能。

在系统中添加一个用于登记订
单信息的宏,在登记订单时,只需在表格中填写相关信息,输入完毕后,宏命令将自动执行,将登记的订单自动录入到对应的表格,从而可以对订单的进出货情况进行精准的管理,保证订单准时准确的发送至客户处。

4、购销合同谈判,使用宏命令实现报价功能。

在系统中添加一个用于生成谈判合同
的宏,当双方达成协议后,需要根据双方谈判结果,来生成电子合同,在输入谈判结果后,宏就会立即被执行,自动在表格中插入谈判后的报价,并生成出符合双方要求的电子合同,从而使达成双方协议效率变得更加高效。

excel宏教程实用案例

excel宏教程实用案例

excel宏教程实用案例一、什么是Excel宏?咱先得搞明白Excel宏是个啥玩意儿。

你可以把Excel宏想象成一个超级小秘书,它能按照你预先设定好的一系列操作步骤自动执行任务。

就像是你告诉这个小秘书:“小秘,先把这列数据排序,然后再把表头颜色改成红色,最后给我计算一下总和。

”然后小秘书就麻溜地按照你说的做了,这个小秘书就是宏啦。

二、第一个实用案例:自动数据清理。

1. 场景描述。

假设你有一个工作表,里面的数据乱得像一团麻。

有很多重复的行,还有一些空单元格,看起来就很头疼。

这时候,宏就可以闪亮登场啦。

2. 宏的编写步骤。

我们要打开“开发工具”选项卡。

要是你找不到这个选项卡,别慌。

你可以在Excel选项里把它调出来。

就像在一个大仓库里找一个小工具,得知道它放在哪儿。

点击“录制宏”,这时候Excel就开始记录你做的每一个动作了,就像打开了一个摄像机在拍你操作一样。

我们先处理重复行。

在“数据”选项卡中找到“删除重复项”,然后选择要检查重复项的列,点击“确定”,这样重复的行就被删掉了。

接着处理空单元格。

选中数据区域(可以用鼠标拖动,也可以用快捷键Ctrl + A 全选),然后在“编辑”菜单里找到“定位”,点击“定位条件”,选择“空值”,再右键点击,选择“删除”,整行删除或者整列删除就看你的数据情况啦。

点击“停止录制宏”。

这个宏就制作好啦。

你可以给这个宏取个有趣的名字,比如“数据清理小能手”。

3. 如何使用这个宏。

下次再遇到类似的数据混乱情况,你只需要在“开发工具”选项卡里找到你刚刚录制好的宏,点击“运行”,就可以看着Excel自动把数据清理得干干净净,是不是很神奇呢?三、第二个实用案例:批量格式设置。

1. 场景描述。

比如说你有一个销售数据表,每个月都要更新。

每次更新后,你都要把销售额那一列设置成货币格式,并且把字体颜色改成绿色,表头加粗显示。

每次手动设置是不是很麻烦?宏又可以来帮忙啦。

2. 宏的编写步骤。

excel 宏语句

excel 宏语句

excel 宏语句Excel 宏语句是一种自动化执行特定任务的代码,可以通过录制和编写VBA (Visual Basic for Applications)代码来创建宏。

以下是一些常用的Excel 宏语句示例:1. 定义变量和对象:vbaDim variable As DataTypeSet object = New ObjectType其中,`variable` 是一个变量名,`DataType` 是变量的数据类型。

`object` 是对象的名称,`ObjectType` 是对象的类型。

2. 打开一个工作簿:vbaWorkbooks.Open "路径\文件名.xlsx"其中,"路径\文件名.xlsx" 是要打开的工作簿的完整路径和文件名。

3. 选择一个工作表:vbaWorksheets("工作表名称").Select其中,"工作表名称" 是要选择的工作表的名称。

4. 运行公式或函数:vbaRange("A1").Formula = "=SUM(A2:A10)"该语句将在单元格A1 中输入“=SUM(A2:A10)”,执行求和操作。

5. 循环操作:vbaFor i = 1 to 10'执行操作Next i上述代码将会循环执行代码块中的操作,i 的值从1 递增到10。

6. 条件判断:vbaIf condition Then'满足条件时执行的操作ElseIf condition Then'满足其他条件时执行的操作Else'以上条件都不满足时执行的操作End If根据条件的不同,执行不同的操作。

以上只是一些常见的示例,根据具体的任务需求,还可以使用其他Excel 宏语句来执行更复杂的操作。

excel宏程序编程100例

excel宏程序编程100例

excel宏程序编程100例Excel是一款功能强大的电子表格软件,它不仅可以进行数据的录入和计算,还可以通过宏程序实现自动化操作。

宏程序是一种自动化脚本,可以通过编程语言来实现对Excel的操作。

下面将介绍100个常用的Excel宏程序编程实例。

1. 创建一个新的工作表2. 删除一个工作表3. 复制一个工作表4. 移动一个工作表5. 隐藏一个工作表6. 显示一个工作表7. 设置工作表的名称8. 设置工作表的颜色9. 设置工作表的字体10. 设置工作表的边框11. 在指定位置插入一行12. 在指定位置插入一列13. 删除指定位置的行14. 删除指定位置的列15. 复制指定位置的行16. 复制指定位置的列17. 移动指定位置的行18. 移动指定位置的列19. 设置指定位置的单元格的值20. 设置指定位置的单元格的格式21. 设置指定位置的单元格的字体22. 设置指定位置的单元格的颜色23. 设置指定位置的单元格的边框24. 设置指定位置的单元格的公式25. 设置指定位置的单元格的链接26. 设置指定位置的单元格的数据验证27. 设置指定位置的单元格的条件格式28. 设置指定位置的单元格的批注29. 设置指定位置的单元格的合并30. 设置指定位置的单元格的拆分32. 设置指定位置的单元格的排序33. 设置指定位置的单元格的分组34. 设置指定位置的单元格的数据透视表35. 设置指定位置的单元格的图表36. 设置指定位置的单元格的条件格式37. 设置指定位置的单元格的数据透视表38. 设置指定位置的单元格的图表39. 设置指定位置的单元格的条件格式40. 设置指定位置的单元格的数据透视表41. 设置指定位置的单元格的图表42. 设置指定位置的单元格的条件格式43. 设置指定位置的单元格的数据透视表44. 设置指定位置的单元格的图表45. 设置指定位置的单元格的条件格式46. 设置指定位置的单元格的数据透视表47. 设置指定位置的单元格的图表49. 设置指定位置的单元格的数据透视表50. 设置指定位置的单元格的图表51. 设置指定位置的单元格的条件格式52. 设置指定位置的单元格的数据透视表53. 设置指定位置的单元格的图表54. 设置指定位置的单元格的条件格式55. 设置指定位置的单元格的数据透视表56. 设置指定位置的单元格的图表57. 设置指定位置的单元格的条件格式58. 设置指定位置的单元格的数据透视表59. 设置指定位置的单元格的图表60. 设置指定位置的单元格的条件格式61. 设置指定位置的单元格的数据透视表62. 设置指定位置的单元格的图表63. 设置指定位置的单元格的条件格式64. 设置指定位置的单元格的数据透视表65. 设置指定位置的单元格的图表66. 设置指定位置的单元格的条件格式67. 设置指定位置的单元格的数据透视表68. 设置指定位置的单元格的图表69. 设置指定位置的单元格的条件格式70. 设置指定位置的单元格的数据透视表71. 设置指定位置的单元格的图表72. 设置指定位置的单元格的条件格式73. 设置指定位置的单元格的数据透视表74. 设置指定位置的单元格的图表75. 设置指定位置的单元格的条件格式76. 设置指定位置的单元格的数据透视表77. 设置指定位置的单元格的图表78. 设置指定位置的单元格的条件格式79. 设置指定位置的单元格的数据透视表80. 设置指定位置的单元格的图表81. 设置指定位置的单元格的条件格式82. 设置指定位置的单元格的数据透视表83. 设置指定位置的单元格的图表84. 设置指定位置的单元格的条件格式85. 设置指定位置的单元格的数据透视表86. 设置指定位置的单元格的图表87. 设置指定位置的单元格的条件格式88. 设置指定位置的单元格的数据透视表89. 设置指定位置的单元格的图表90. 设置指定位置的单元格的条件格式91. 设置指定位置的单元格的数据透视表92. 设置指定位置的单元格的图表93. 设置指定位置的单元格的条件格式94. 设置指定位置的单元格的数据透视表95. 设置指定位置的单元格的图表96. 设置指定位置的单元格的条件格式97. 设置指定位置的单元格的数据透视表98. 设置指定位置的单元格的图表99. 设置指定位置的单元格的条件格式100. 设置指定位置的单元格的数据透视表以上是100个常用的Excel宏程序编程实例,通过这些实例,我们可以更好地掌握Excel宏程序的编程技巧,提高工作效率。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Excel宏教程一、选中单个单元格Range(“<单元格地址>“).Select例:Range("C9").Select ‘选中“C9”单元格二、选中多个单元格Range(“<单元格地址>:<单元格地址>[,<单元格地址>……]”).Select例:Range(“A1:B2”).Select‘选中“A1”、“A2”、“B1”、“B2”四个连续的单元格Range(“12:12”).Select‘选中第12行Range(“B:B”).Select‘选中第B列Range(“A1:A2,B7,2:2”).Select‘选中“A1”、“A2”、“B7”五个不连续的单元格和第二行Cells.Select ‘选中当前SHEET中的所有单元格Rows("<行地址>:<行地址>").Select ‘选中整行Columns("<列地址>:<列地址>").Select ‘选中整列例:Rows(“2:2”). Select‘选中第2行Rows(“2:5”). Select‘选中2到5行Columns("A:A").Select ‘选中A列Columns("E:B").Select ‘选中E到B列三、设置活动单元格Range("<单元格地址>").Activate注:设置活动单元格与选中单元格类似,不同之处就是后者在选中指定的单元格之前会将在此前已被选中的单元格取消掉。

前者在设置之前不会取消已选中的单元格,如果此时操作的单元格不是被选中的单元格,这时他实现的功能与选一个单元格相同。

四、给活动的单元格赋值ActiveCell.FormulaR1C1 = <值>例:Range("A1").SelectActiveCell.FormulaR1C1 = "Name"Range("B1").SelectActiveCell.FormulaR1C1 = "Age"Range("A2:B3").SelectRange("A2").ActivateActiveCell.FormulaR1C1 = " BUG"Range("B2").ActivateActiveCell.FormulaR1C1 = "12"Range("A3").ActivateActiveCell.FormulaR1C1 = "Archer"Range("B3").ActivateActiveCell.FormulaR1C1 = "37"五、得到指定单元格中的值Range("<单元格地址>").Text六、插入单元格Selection.Insert Shift:=<XlDirection值>Selection.EntireRow.InsertSelection.EntireColumn.Insert例:Selection.Insert Shift:=xlToRight ‘在当前选中单元格的位置插入单元格并将当前选中的单元格向右移动Selection.Insert Shift:=xlDown ‘在当前选中单元格的位置插入单元格并将当前选中的单元格向下移动Selection.EntireRow.Insert ‘在当前选中单元格的上面插入一行Selection.EntireColumn.Insert ‘在当前选中单元格的左侧插入一列七、设置字体属性1. 设置字体名称和大小 = <字体名称>Selection.Font.Size = <字号>例: = "隶书"Selection.Font.Size = 152. 设置字体样式Selection.Font.Bold = <True / False> ‘加粗Selection.Font.Italic = <True / False> ‘斜体Selection.Font.Underline = < XlUnderlineStyle(下划线样式)> ‘下划线XlUnderlineStyle(下划线样式):xlUnderlineStyleDouble ‘双下划线xlUnderlineStyleDoubleAccounting ‘会计用双下划线(如果当前单元格中的数据是数字时则下划线的宽度是当前单元格的宽度)xlUnderlineStyleNone 没有下划线xlUnderlineStyleSingle ‘单下划线xlUnderlineStyleSingleAccounting ‘会计用单下划线(如果当前单元格中的数据是数字时则下划线的宽度是当前单元格的宽度)3. 设置字体的颜色Selection.Font.ColorIndex = <0到56之间的数字>Selection.Font.Color = <RGB值>4. 设置字体的特殊效果Selection.Font.Strikethrough = <True / False> ‘删除线Selection.Font.Superscript = <True / False> ‘上标Selection.Font.Subscript = <True / False> ‘下标八、清空选中单元格里的内容Selection.ClearContents例:Range(“A1:A2,B7,2:2”).Select ‘选中“A1”、“A2”、“B7”五个不连续的单元格和第二行Selection.ClearContents ‘清空“A1”、“A2”、“B7”五个不连续单元格中的所有内容九、设置选中单元格的边线属性XlBordersIndex(边线):xlEdgeLeft '单元格左边线xlEdgeTop ‘单元格上边线xlEdgeRight ‘单元格右边线xlEdgeBottom ‘单元格下边线xlDiagonalDown ‘单元格左上右下斜线xlDiagonalUp ‘单元格左上右下斜线xlInsideVertical ‘多个单元格内垂直线xlInsideHorizontal ‘多个单元格内水平线1. 设置边线的类型Selection.Borders(<边线>).LineStyle = < XlLineStyle(边线类型)>XlLineStyle(边线类型):xlLineStyleNone ‘无样式xlContinuous ‘单线xlDash ‘破折号线(间隔线)xlDashDot ‘破折号点线xlDashDotDot ‘破折号点点线xlDot ‘点线xlDouble ‘双横线xlSlantDashDot ‘斜点线2. 设置边线的宽度Selection.Borders(<边线>).Weight = <XlBorderWeight(边线的宽度值)>XlBorderWeight(宽度值):xlHairline ‘极细xlThin ‘细xlMedium ‘中等xlThick ‘粗3. 设置边线的颜色Selection.Borders(xlEdgeLeft).ColorIndex = <0到56之间的数字>Selection.Borders(xlEdgeLeft).Color = <RGB值>十、删除选中的单元格Selection.Delete <XlDirection值>Selection.EntireRow.DeleteSelection.EntireColumn.Delete例:Selection.Delete Shift:=xlToLeft ‘删除选中的单元格,并将已删除单元格所在位置右面的单元格向左移动Selection.Delete Shift:=xlUp ‘删除选中的单元格,并将已删除单元格所在位置下面的单元格向上移动Selection.EntireRow.Delete ‘删除选中单元格所在的行Selection.EntireColumn.Delete ‘删除选中单元格所在的列十一、设置单元格背景色及图案1. 背景色Selection.Interior.ColorIndex = <0到56之间的数字> Selection.Interior.Color = <RGB值>2. 图案样式Selection.Interior.Pattern = <Constants(图案样式)>Constants(图案样式):xlSolid '实心xlGray75 '75% 灰色xlGray50 '50% 灰色xlGray25 '25% 灰色xlGray16 '12.5% 灰色xlGray8 '6.25% 灰色xlHorizontal '水平条纹xlVertical '垂直条纹xlDown '逆对角线条纹xlUp '对角线条纹xlChecker '对角线剖面线xlSemiGray75 '粗对角线剖面线xlLightHorizontal '细水平条纹xlLightVertical '细垂直条纹xlLightDown '细逆对角线条纹xlLightUp '细对角线条纹xlGrid '细水平剖面线xlCrissCross '细对角线剖面线3. 图案颜色Selection.Interior.PatternColorIndex = <0到56之间的数字>Selection.Interior.PatternColor = <RGB值>十二、返回工作表中的行数edRange.Rows.Count ‘返回从最小已输入内容的行号到最大已输入内容的行号之间的行数edRange.Rows(edRange.Rows.Count).Row ‘最大已输入内容的行号十三、得到当前EXCEL的文件名ThisWorkbook.Path ‘文件路径 ‘文件名ThisWorkbook.FullName ‘全路径十四、批注的操作1. 添加批注AddComment([Content])例:Range("A1").AddComment ("Writes the content in here!")2. 修改批注内容Comment.Text例:Range("B1").Comment.Text Text:= "Writes the content in here!"3. 显示/隐藏批注Comment.Visible = <True/False>4. 删除批注ClearComments例:Selection.Range("B1").ClearComments5. 选中批注Comment.Shape.Select True例:Range("D8").Comment.Shape.Select True6. 改变批注大小和位置Selection.ShapeRange.ScaleWidth <宽度比例>, msoFalse, <MsoScaleFrom> Selection.ShapeRange.ScaleHeight <高度比例>, msoFalse, <MsoScaleFrom>例:Selection.ShapeRange.ScaleWidth 1.5, msoFalse, msoScaleFromTopLeft ‘每次增加5%的宽度Selection.ShapeRange.ScaleHeight 0.6, msoFalse, msoScaleFromTopLeft ‘每次减少6%的宽度Selection.ShapeRange.Left = <左边距>Selection.ShapeRange.Top = <上边距>Selection.ShapeRange.Width = <宽度值>Selection.ShapeRange.Height = <高度值>十五、剪切、复制、粘贴Selection.Cut ‘剪切Selection.Copy ‘复制ActiveSheet.Paste ‘粘贴例:Range("A1").SelectSelection.CutRange("A2").SelectActiveSheet.PasteSelection.CopyRange("A3").SelectActiveSheet.Paste十六、选择性粘贴Selection.PasteSpecial <option>十七、改变列宽Selection.ColumnWidth = <宽度值> ‘指定列宽例:Columns("A:A").SelectSelection.ColumnWidth = 30 ‘改变已选列的宽度EntireColumn.AutoFit ‘自动改变列宽例:Columns("C:C").EntireColumn.AutoFit ‘根据C列的内容自动改变列的宽度在Excel 97中,"宏"是一个难以理解的概念,但对于一个具体的"宏"而言,却是容易理解的,如果说"将一块文字变为注释:黑体注释:,字号为注释:三号注释:"就可以看作一个"宏"的话,那么"宏"就不难理解了,其实Excel 97中的许多操作都可以是一个"宏"。

相关文档
最新文档