End Sub 需求说明:
'复制当前工作簿的“报表”工作表到“临时”工作簿为“001”表。
'如果“临时”工作簿未打开,就创建新工作簿为“临时”并在其中加入“001”表; '如果“临时”工作簿已经打开,就直接加入“001”表。
'如果打开的“临时”工作簿中已经有“001”表,就报错退出。 '帖子地址:
http://club.excelhome.net/dispbbs.asp?boardid=2&replyid=875804&id=245219&page=1&skin=0&Star=2
删除指定文件
Sub 删除指定文件() Kill \信件\\1.xls\End Sub
合并A1至C1的内容写到D15单元的批注中
?http://club.excelhome.net/dispbbs.asp?boardid=2&id=251887 northwolves版主 Sub 将A1至C1的内容写到D15单元的批注中() [iv1:iv12] = \
[d15].AddComment Join(Application.Transpose([iv1:iv12]), vbCrLf) [iv1:iv12] = \
[d15].Comment.Visible = True
[d15].Comment.Shape.Height = 100 End Sub 自动重算
Sub 自动重算()
With Application
.Calculation = xlAutomatic End With End Sub 手动重算
Sub 手动重算()
With Application
.Calculation = xlManual End With End Sub
调整选中对象中的文字
Sub 调整选中对象中的文字() '文字居中、自动调整大小 With Selection
.HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .ReadingOrder = xlContext .Orientation = xlHorizontal .AutoSize = True .AddIndent = False End With End Sub
去除指定范围内的对象
Sub 去除指定范围内的对象() Dim p As Shape
Set My = Worksheets(\工作表名\ For Each p In My.Shapes
If Not Application.Intersect(p.TopLeftCell, Range(\范围\ Next End Sub
更新透视表数据项
Sub DeleteMissingItems2002All()
'防止数据透视表中显示无用的数据项 '在 Excel 2002 或更高版本中 '如果无用的数据项已经存在, '运行这个宏可以更新 Dim pt As PivotTable Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets For Each pt In ws.PivotTables
pt.PivotCache.MissingItemsLimit = xlMissingItemsNone Next pt Next ws
End Sub
将全部工作表名称写到A列 Sub 将全部表名称写到A列() k = 1
For Each Sht In Sheets
Cells(k + 1, 1) = Sht.Name '指定写入的行和列 k = k + 1 Next End Sub
为当前选定的多单元插入指定名称
Sub 为当前选定的多单元插入指定名称() Selection.Name = \临时\
ActiveWorkbook.Names.Add Name:=\临时\可以 End Sub
删除全部名称
Sub 删除全部名称() On Error Resume Next Dim l As Integer
l = ActiveWorkbook.Names.Count For i = l To 1 Step -1
ActiveWorkbook.Names(i).Delete Next End Sub
以指定区域为表目录补充新表
Sub 以指定区域为表目录补充新表() Dim dic As Object, sh As Worksheet Dim arr, item
arr = Range(\
Set dic = CreateObject(\ For Each sh In ThisWorkbook.Worksheets dic.Add sh.Name, \ Next
For Each item In arr
If item <> \ With ThisWorkbook.Worksheets.Add .Name = item End With End If Next
Set dic = Nothing End Sub
'或者换用这行代码也 按A列数据批量修改表名称
Sub 按A列数据批量修改表名称() Dim i%
For i = 1 To Sheets.Count - 1
Sheets(i).Name = Cells(i + 1, 1).Text Next End Sub
按A列数据批量创建新表(控件按钮代码) Private Sub CommandButton1_Click() On Error Resume Next Dim i%, j%
For i = 1 To [a65536].End(xlUp).Row For j = 2 To Sheets.Count
If Cells(i, 1) = Sheets(j).Name Then Exit For End If Next
Sheets.Add(after:=Sheets(Sheets.Count)).Name = Cells(i, 1) Next End Sub
指定单元显示光标位置内容(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal T As Range) Sheets(1).Range(\End Sub
每编辑一个单元保存文件
Private Sub Worksheet_Change(ByVal Target As Range) ThisWorkbook.Save End Sub
指定允许编辑区域
Sub 指定允许编辑区域()
ActiveSheet.ScrollArea = \End Sub
解除允许编辑区域限制
Sub 解除允许编辑区域限制() ActiveSheet.ScrollArea = \End Sub 删除指定行
Sub 删除指定行()
Workbooks(\临时表\表2\End Sub
删除A列为指定内容的行
Sub 删除A列为指定内容的行() Dim a, b As Integer
a = Sheet1.[a65536].End(xlUp).Row For b = a To 2 Step -1
If Cells(b, 1).Value = \删除\ Rows(b).Delete End If Next End Sub
删除A列非数字单元行
Sub 删除A列非数字单元行() i = [a65536].End(xlUp).Row
Range(\End Sub
有条件删除当前行
Sub 有条件删除当前行()
If [A1] = 2 Or [B1] = \删除\Selection.Delete Shift:=xlUp End If End Sub 选择下一行
Sub 选择下一行()
ActiveCell.Offset(1, 0).Rows(\End Sub
选择第5行开始所有数据行
Sub 选择第5行开始所有数据行A() Dim i%
i = Cells.Find(\SearchDirection:=xlPrevious).EntireRow.Row Rows(\ End Sub
Sub 选择第5行开始所有数据行B()
Rows(\ End Sub
选择光标或选区所在行
Sub 选择光标或选区所在行() Selection.EntireRow.Select End Sub
选择光标或选区所在列
Sub 选择光标或选区所在列() Selection.EntireColumn.Select End Sub
光标定位到名称指定位置 Sub 定位()
Application.Goto Range(Evaluate(\名称\) End Sub
选择名称定义的数据区
Sub 选择名称定义的数据区()
[数据区].Select '插入名称要使用INDIRECT函数 'Range(\数据区\ 或者 'Sheet1.Range(\数据区\或者 End Sub
选择到指定列的最后行
Sub 选择到指定列的最后行()
Range(\End Sub
将Sheet1的A列的非空值写到Sheet2的A列
Sub 将Sheet1的A列的非空值写到Sheet2的A列()
Sheet1.Columns(\End Sub
将名称1的数据写到名称2 Sub Macro2()
Range(\位置2\位置1\End Sub 单元反选
Sub 单元反选()
Application.DisplayAlerts = False Application.ScreenUpdating = False
Dim raddress As String, taddress As String raddress = Selection.Address
taddress = ActiveSheet.UsedRange.Address With Sheets.Add .Range(taddress) = 0 .Range(raddress) = \
raddress = .Range(taddress).SpecialCells(xlCellTypeConstants, 1).Address .Delete End With
ActiveSheet.Range(raddress).Select Application.ScreenUpdating = True End Sub
指定区域单元双击数据累加(工作表代码)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Application.Intersect([A1:Y100], Target) Is Nothing Then oldvalue = Val(Target.Value)
inputvalue = InputBox(\请输入数量,按ENTER键确认!\数值累加器\Target.Value = oldvalue + inputvalue End If End Sub
选择单元区域触发事件(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = \ MsgBox \你选择了$A$1:$B$2单元\End If End Sub
当修改指定单元内容时自动执行宏(工作表代码) Private Sub Worksheet_Change(ByVal Target As Range) If Not Application.Intersect(Target, [B3:B4]) Is Nothing Then 重排窗口 End If End Sub
被指定单元内容限制执行宏 Sub 被指定单元限制执行宏()
If Range(\关闭\窗口 End Sub
双击单元隐藏该行(工作表代码)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Rows(Target.Row).Hidden = True End Sub
高亮显示行(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cells.Interior.ColorIndex = 2
Rows(\ '保持1至2行的颜色推荐39,22,40,
Rows(Target.Row).Interior.ColorIndex = 35 '高亮推荐颜色35,20,24,34,37,40,15 End Sub
高亮显示行和列(工作表代码)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cells.Interior.ColorIndex = xlNone
Rows(Target.Row).Interior.ColorIndex = 34
Columns(Target.Column).Interior.ColorIndex = 34 End Sub
为指定工作表设置滚动范围(工作簿代码)
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)