当前位置:文档之家› 笔记-my vba-2014.10.20

笔记-my vba-2014.10.20

Tips:chr(10)——换行符Space(4)——空四格

1. 常用指令

1.1 定制模块行为

Option Explicit .............................................. '强制对模块内所有变量进行声明

Option Private Module ................................ '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示

On Error GoTo Line ....................................... '当错误发生时,会立刻转移到line 行去

On Error Resume Next ................................. '忽略错误继续执行VBA代码,避免出现错误消息

On Error GoTo ErrorHandler ...................... '当错误发生时跳转到过程中的某个位置

On Erro GoTo 0 ............................................. '恢复正常的错误提示

Option Base 1 ............................................... '指定数组的第一个下标为1

Option Compare Text ................................... '字符串不区分大小写

Application.DisplayAlerts = False ................. '禁止显示提示和警告消息

Application.DisplayAlerts = True .................. '显示提示和警告消息

Application.ScreenUpdating = False ............ '关闭屏幕更新

Application.ScreenUpdating = True ............. '打开屏幕更新

Application.EnableEvents = False ................ '禁止事件发生

Application.EnableEvents = True ................. '允许事件发生

Application.Enable.CancelKey = xlDisabled . '禁用Ctrl+Break中止宏运行的功能

1.2 工作簿与工作表

ActiveWindow.EnableResize = False ............ ................ '禁止调整活动工作簿的大小

Application.Window.Arrange xlArrangeStyleTiled ....... '将工作簿以平铺方式排列ActiveWorkbook.WindowState = xlMaximized ............. '将当前工作簿最大化MsgBox ActiveWindow.DisplayHeadings = Not ActiveWindow.DisplayHeadings'切换工作表中的行列边框显示Cells.Hyperlinks.Delete ................................ ................ '取消当前工作表所有超链接

ExecuteExcel4Macro("GET.DOCUMENT(50)") .............. '查看打印所需页数

2. 单元格

说明:

单元格:是excel中最小的一个单位(工作簿,工作表,行,列,单元格)

单元格行数:1048576(03版为65536行)

单元格列数:16384(03版为256列)

单元格个数:17179869184(03版为16777216)

单元格容量:32767 个字符

2.1 单元格表示

2.1.1 单一单元格表示

Range ("A1") ................................................ A1单元格

[A1] A1单元格

Cells(2, 5) ..................................................... 第2行第5列单元格

Cells(5, "A") .................................................. A5单元格

2.1.2 多个单元格表示

Range("A1,F5") ............................................ A1和F5单元格

Range("A1", "F5") ........................................ A1到F5区域单元格

Range("A1:F5") ............................................ A1到F5区域单元格

Range(Range("A1"), Range("F5")) ............... A1到F5区域单元格

Range("A1:A3", "C2:C4") ............................. A1到C4区域单元格

Range(Cells(1, 1), Cells(4, 3)) ....................... A1到C4区域单元格

[D2:F5] ......................................................... D2到F5区域单元格

[D2,F5] ......................................................... D2和F5单元格

Union(Range("A1:D4"), Range("E5:H8")) .... A1到D4与E5到H8区域单元格

Range("A:A") ................................................ A列单元格

Range("1:3")................................................. 第1到第3行

Rows(2) (2)

Rows("2:4") .................................................. 第2行到第4行

Columns(2) ................................................... B列

Columns("B:D") ............................................ B列到D列

Range("B3").EntireColumn .......................... B列

Range("B3").EntireRow (3)

Range("B2:D4").Range("B2") ....................... C3单元格(相对单元格)

Range("C3:E5")(4) ........................................ C4单元格(相对单元格)

Range("C3:E5").Cells(4) .............................. C4单元格(相对单元格)

[C3:E5].Item(4) ............................................. C4单元格(相对单元格)

Range("A1:C4")(3, 2) .................................... B3单元格(相对单元格)

Range("A1:C4").Cells (3, 2) .......................... B3单元格(相对单元格)

************************************************************************************* Range("A1:C4")(4.4) ..................................... A2单元格(当有小数时,则取整)

Range("A1:C4")(4.5) ..................................... A2单元格

Range("A1:C4")(4.6) ..................................... B2单元格

Range("A1:C4")(5.4) ..................................... B2单元格

Range("A1:C4")(5.5) ..................................... C2单元格

Range("A1:C4")(5.6) ..................................... C2单元格

Range("A1:C4")(1.5, 2.5) .............................. B2单元格

'注意:如果索引号出现小数,则按照“四舍六入五单双”的“银行家舍入法”(奇进偶不进)

************************************************************************************* 2.1.3 带参数单元格表示(设参数为a和b,a=5,b=2)

Range("A" & a) ............................................. A a(A5)单元格

Range("A2:A" & a) ....................................... A2到Aa(A5)单元格

Range("A2", "A" & a) ................................... A2到Aa(A5)单元格

Range("A" & b, "A" & a) ............................... A b(A2)到Aa(A5)单元格

Cells(5, a)...................................................... E5单元格

Range(Chr(64 + a) & b) ................................ E2单元格

2.1.4 单元格行数和列数

Range("B5").Row ......................................... B5所在的行数(=5)

Range("B5").Column .................................... B5所在的列数(=2)

2.1.5 单元格值表示

示例:

[A1]=”我懂”'A1单元格的值为“我懂”

[A1].NumberFormatLocal = ";;;""我不懂""" 'A1数值格式设置为“我不懂“(即输入什么都显示“我不懂”)MsgBox [A1].Value '实际是什么,就是什么(即“我懂”)

MsgBox [A1].Text '看到是什么,就是什么(即“我不懂”)

MsgBox [A1] '实际是什么,就是什么(即“我懂”)

2.1.6 单元格地址表示

示例:

With Range("B2:I6")

[C8] = .Address '结果为$B$2:$I$6

[C9] = .Address(0, 0) '结果为B2:I6

[C10] = .Address(1, 0) '结果为B$2:I$6

[C11] = .Address(0, 1) '结果为$B2:$I6

[C12] = .Address(1, 1) '结果为$B$2:$I$6

End With

2.1.7 单元格偏移

语法:expression.Offset(RowOffset, ColumnOffset)

Range("A1").Offset(rowoffset:=2, columnoffset:=3) .... A1偏移2行3列(D3)

Range("A1").Offset(2, 3) .............................. ................ A1偏移2行3列(D3)

2.1.8 单元格调整大小

语法:expression.Resize(RowSize, ColumnSize)

Range("A1").Resize(rowsize:=2, columnsize:=3)........... A1起始增至2行3列(A1到C3单元格)Range("A1").Resize(2, 3) .............................. ................ A1起始增至2行3列(A1到C3单元格)

2.1.9 单元格上级信息

示例:

With Range("B1")

[B3] = https://www.doczj.com/doc/f19676807.html, 'B3返回B1单元格所在工作表名称

[B4] = https://www.doczj.com/doc/f19676807.html, 'B4返回B1单元格所在工作簿名称

End With

2.1.10 单元格插入与删除

语法:expression.Insert(Shift, CopyOrigin)

示例1:

Worksheets("Sheet1").Range("A1:D10").Delete Shift:= xlShiftToLeft

'删除 Sheet1 的 A1:D10 单元格区域,并将其右侧单元格向左移位

示例2:隔行插入

Dim r%

Do

r = r + 2

Rows(r).Insert

Loop Until Cells(r + 1, 1) = ""

示例3:隔行删除

Dim r%, m%

m = Application.CountA(Columns(1)) '计算最大行数

For r = 1 To m / 2 '从1到m/2

Rows(r).Delete '删除该行

Next

示例4:删除空行

Dim rng As Range, ads As String

For Each rng In Range("A1:A" & Range("A65536").End(xlUp).Row)

If rng = "" Then ad = ad & rng.Address & ","

Next

ads = Left(ad, Len(ad) - 1)

Range(ads).EntireRow.Delete

2.1.11 特殊单元格

2.1.11.1最值单元格

示例:

Cells(Rows.Count, 1).End(xlUp).Select '选定A列最后一个单元格

Range("B65536").End(xlUp).Select '选定B列最后一个单元格

Cells(1, Columns.Count).End(xlToLeft).Select

'选定第1行最后一个单元格

Msgbox Application.CountA(Range("a:a")) '计算A列已使用的行数

Msgbox Application.CountA(Range("1:1")) '计算第一行已使用的列数

Rows.Select '选择所有行

Columns.Select '选择所有列

Cells.Select '选择所单元格

Msgbox Columns(1).Find("*", , , , , searchdirection:=xlPrevious).Row

'计算A列最后一个非空单元格的所在行数

2.1.11.2特定单元格

语法:expression.SpecialCells(Type, Value)

https://www.doczj.com/doc/f19676807.html,edRange.SpecialCells(xlCellTypeConstants, xlTextValues).Select

'选中Sheet1 中的已用区域的文本常量

2.1.12 单元格值的判断

空值的判断

If Range("A1") = "" Then '判断A1是否为空单元格

If Len([A1]) = 0 Then '判断A1是否为空单元格

If VBA.IsEmpty([A1]) Then '判断A1是否为空单元格

数字的判断

If VBA.IsNumeric([A2]) And [A2] <> "" Then '判断A2是否为数字

If Application.WorksheetFunction.IsNumber([A2]) Then '判断A2是否为数字

文本的判断

If Application.WorksheetFunction.IsText([A3]) Then '判断A3是否为文本

If VBA.TypeName([A3].Value) = "String" Then '判断A3是否为文本

汉字的判断

If [A4] > "z" Then '判断A4是否为汉字

错误值的判断

If VBA.IsError([A5]) Then '判断A5是否为错误值

If Application.WorksheetFunction.IsError([A5]) Then '判断A5是否为错误值

日期的判断

If VBA.IsDate([A6]) Then '判断A6是否为日期

合并单元格的判断

Range("E2") = IsNull(Range("A1:D7").MergeCells) Then '判断A1:D7是否存在合并单元格2.2 单元格格式设置

2.2.1 数字格式

Range("B2").NumberFormatLocal = "0.00" '设置单元格数字格式为“0.00”

2.2.2 字体格式

示例:

With Range("B2").Font '设置B2单元格的字体格式

.Name = "华文彩云" '设置字体为华文彩云字体

.FontStyle = "Bold Italic" '设置字体为粗体和斜体

.Size = 18 '设置字体大小为18

.Color = RGB(0, 255, 0) '设置字体为RGB中的(0, 255, 0) .ColorIndex = 3 '设置字体颜色为调色板中的3号 .Underline = 2 '设置字体带单下划线

.Strikethrough = True '设置字体带删除线

.Superscript = True '设置字体为上标字符

.Subscript = False '设置字体不为下标字符.NumberFormatLocal = "0.00" '设置单元格数字格式为End With

Range("A1").Font.Bold = True '设置A1字体为粗体

Range("A1").Font.Italic = True '设置A1字体为斜体

2.2.3 对齐格式

2.2.

3.1水平对齐

语法:

Range("D2").HorizontalAlignment = xlCenter 'D2设置水平居中

2.2.

3.2垂直对齐

语法:

Range("D2").VerticalAlignment = xlCenter 'D2设置垂直居中

2.2.

3.3缩进

语法:expression.IndentLevel(可为 0 到15之间的整数值-输入小数会取整)

调色板中颜色的编号

示例:

With Range("D2")

.HorizontalAlignment = xlLeft '设置D2为左对齐

.IndentLevel = 2 '设置D2缩进量为2

End With

2.2.

3.4文字方向

语法:expression.Orientation(可为–90 到90 度之间的整数值)

Range("D2").Orientation = 30 '设置D2的文字方向为30度2.2.3.5阅读次序

语法:

2.2.

3.6单元格缩小字体填充

Range("B2").ShrinkToFit = True 'B2开启缩小字体填充

2.2.

3.7单元格自动换行

Range("B2").WrapText = True 'B2开启自动换行

2.2.

3.8单元格合并

Range("B2:C5").MergeCells = True 'B2:C5区域合并单元格

Range("B2:C5").Merge 'B2:C5区域合并单元格

Range("e1") = Range("b2").MergeArea.Address '返回单元格所在的合并单元格区域

2.2.4 内部格式

设置ColorIndex和PatternColorIndex也可使用XlColorIndex常量

75% 灰色

50% 灰色

25% 灰色

12.5% 灰色

6.25% 灰色

水平条纹

垂直条纹

逆对角线

对角线条纹

对角线剖面线

对角线

水平

垂直

逆对角线

对角线

水平剖面线

对角线

示例:

With Range("B2").Interior '设置B2单元格的内部格式

.ColorIndex = 8 '设置边框内部颜色为调色板中的8号

.Pattern = xlPatternCrissCross '设置单元格设置内部图案为十字图案

.PatternColorIndex = 6 '设置边框内部图案的颜色为调色板中的6号End With

2.2.5 边框格式

语法:BorderAround(LineStyle, Weight, ColorIndex, Color)

示例:

With Range("B2:D4").Borders '设置B2:D4区域的边框

.LineStyle = xlDot '设置边框的线条样式为

.Weight = xlMedium '设置边框的粗细为中等

.ColorIndex = 5 '设置边框的颜色为调色板中的5号End With

Range("B2:D4").BorderAround xlContinuous, xlMedium, 5

'设置B2:D4区域的外围边框为连续线,中等粗细,颜色为调色板中的5号

2.3 单元格选择

语法:

Range("A1").Select '选中A1单元格

Range("A1:B5").Activate '选定A1:B5区域

Application.Goto Reference:=Range("A5"), scroll:=True

'选定单元格 A5,并滚动工作表以显示该单元格

2.4 单元格清除

Range("A1").Clear '清除A1单元格(包括所有格式)Range("A1").ClearContents '清除A1单元格的数值

Range("A1").ClearComments '清除A1单元格的批注

Range("A1").ClearNotes '清除A1单元格的批注

Range("A1").Comment.Delete '清除A1单元格的批注

2.5 单元格输入

2.5.1 单元格复制

语法:expression.Copy(Destination)

Range("A1").Copy '复制A1单元格

Range("A1").Copy Destination:=Range("A2") 'A1复制到A2(包括所有格式)Range("A1").Copy Range("A2") 'A1复制到A2(带所有格式)2.5.2 单元格粘贴

Range("A1").Copy '复制A1单元格

Range("A4").PasteSpecial Paste:=xlPasteValues, Operation:=xlPasteSpecialOperationNone, Skipblanks:=True, Transpose:=True 'A1的数值复制到A4中,其他属性为默认值

Range("A4").PasteSpecial xlPasteValues 'A1的值复制到A4中

Range("A4").PasteSpecial(xlPasteValues) 'A1的值复制到A4中

2.5.3 单元格的输入

Range("A1").Value = Range("A4").Value 'A4的数值赋给A1

2.6 单元格查找与替换

2.6.1 Find、FindNext、FindPrevious

语法:expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SerchFormat)

expression.FindNext(After)

expression.FindPrevious(After)

What Variant 类型,必需。要搜索的数据。可为字符串或任意Microsoft Excel 数据类型。After Variant 类型,可选。表示搜索过程将从其之后开始进行的单元格。此单元格对应于从用户界面搜索时的活动单元格位置。值得注意的是,After 必须是区域中的单个单元格。请记住搜索是从该单元格之后开始的;直到本方法绕回到指定的单元格时,才对其进行搜索。如果未指定本参数,搜索将从区域的左上角单元格之后开始。

LookIn Variant 类型,可选。信息类型。

LookAt Variant 类型,可选。可为以下XlLookAt 常量之一:xlWhole 或xlPart。SearchOrder Variant 类型,可选。可为以下XlSearchOrder 常量之一:xlByRows 或xlByColumns。SearchDirection XlSearchDirection 类型,可选。搜索的方向。

XlSearchDirection 可为以下XlSearchDirection 常量之一。xlNext 默认值,xlPrevious

MatchCase Variant 类型,可选。若为True,则进行区分大小写的查找。默认值为False。MatchByte Variant 类型,可选。仅在选择或安装了双字节语言支持时使用。若为True,则双字节字符仅匹配双字节字符。若为False,则双字节字符可匹配其等价的单字节字符。SearchFormat Variant 类型,可选。搜索的格式。

每次使用Find

调用Find方法时不指定这些参数的值,就使用保存的值。因此每次使用该方法时请明确设置这些参数。

可以使用FindNext 和FindPrevious 方法重复搜索。

当搜索到指定的搜索区域的末尾时,本方法将绕回到区域的开始继续搜索。发生绕转后,若要停止搜索,请保存第一个找到的单元格地址,然后依据该保存地址测试每个后续查找到的单元格地址。

2.6.2 Replace、ReplaceFormat

语法:expression.Replace(What, Replacement, LookAt, SearchOrder, MatchCase,MatchByte, SearchFormat, ReplaceFormat)

expression.ReplaceFormat

示例:

With Application.FindFormat.Font

.Name = "Arial" '查找字体名称为 Arial

.FontStyle = "Regular" '查找字体名称为 Arial

.Size = 10

End With

With Application.ReplaceFormat.Font

.Name = "Arial"

.FontStyle = "Bold"

.Size = 8

End With

With Application.ReplaceFormat.Font

MsgBox .Name & "-" & .FontStyle & "-" & .Size & _

" font is what the search criteria will replace cell formats with."

End With

Cells.Replace What:="", Replacement:="",SearchFormat:=True, ReplaceFormat:=True

2.6.3 For Each...Next 语句和Like 运算符

语法:result = string Like pattern

示例:

Dim c As Range '设置c的数据类型为单元格

For Each c In [A1:C5] '查找范围为A1:C5

If https://www.doczj.com/doc/f19676807.html, Like "Co*" Then '查找字体名称开头为Co的单元格

https://www.doczj.com/doc/f19676807.html, = "Times New Roman" '替换该单元格字体为Times New Roman

End If

Next

示例:

Dim Rng As Range '设置Rng的数据类型为单元格For Each Rng In .Range("A1:C5") '查找范围为A1:C5

If Rng.Text Like "↑*" Then '查找单元格值开头为↑的单元格 Rng.HorizontalAlignment = xlLeft '替换该单元格格式为左对齐 Else

If Rng.Text Like "↓*" Then '查找单元格值开头为↓的单元格 Rng.HorizontalAlignment = xlRight '替换该单元格格式为右对齐 End If

End If

Next

2.7 单元格排序

语法:expression.Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)

示例:

https://www.doczj.com/doc/f19676807.html,edRange.Sort _ '对sheet1的已用区域进行排序 key1:=Cells(1, 1), _ '单元格A1作为第一排序关键字 order1:=xlDescending, _ 'Key1按降序排序

key2:=Cells(1, 2), _ '单元格B1作为第一排序关键字 order2:=xlAscending, _ 'Key2按升序排序

Header:=xlYes, _ '第一行为标题行

MatchCase:=False '不区分大小写

2.8 字符串

2.8.1 Left,Right,Mid,Len函数

语法:Left(string, length)

Right(string, length)

Mid(string, start[, length])

Len(string | varname)

示例:

Dim sr

sr = "Excel精英培训网"

Debug.Print Left(sr, 5) '截取sr中左起5个字符

Debug.Print Right(sr, 5) '截取sr中右起5个字符

Debug.Print Mid(sr, 3, 5) '截取sr中中间第3个字符起5个字符Debug.Print Left(sr, Len(sr) - 1) '截取sr中除左边最后一个外的字符2.8.2 Split,Join函数

语法:Split(expression[, delimiter[, limit[, compare]]])

Join(sourcearray[, delimiter])

示例:

Dim sr$, arr, i%

sr = "Excel的精的英的培训网"

arr = Split(sr, "的") 'arr去除sr中的“的“Cells(1, "A") = UBound(arr)

For i = 0 To UBound(arr)

Cells(i + 2, "A") = arr(i)

Next i

Cells(UBound(arr) + 3, "A") = Join(arr, "+")

2.8.3 Val函数(返回包含于字符串内的数字)

语法:Val(string)

Debug.Print Val(" 1615 198th Street N.E.") '返回1615198

3.

3.1 工作簿与工作表

3.1.1 工作簿

3.1.1.1工作簿名称

Workbooks(1).Name '第一个工作簿的名称(包含扩展名)Windows(1)https://www.doczj.com/doc/f19676807.html, '第一个窗口的工作簿名称(包含扩展名)https://www.doczj.com/doc/f19676807.html, '当前工作簿(即代码所在工作簿)

https://www.doczj.com/doc/f19676807.html, '活动工作簿(即被激活的工作簿)

3.1.1.2新建工作簿

Workbooks.Add '新建工作簿

3.1.1.3打开工作簿

语法:expression .Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)

3.1.1.4保存工作簿

语法:expression.Save

expression.SaveAs(FileName,FileFormat,Password,WriteResPassword,ReadOnlyRecommended,Cr eateBackup,AccessMode,ConflictResolution,AddToMru,TextCodepage,TextVisualLayout,Local) ThisWorkbook.Save '保存工作簿

ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\123.xls"

'当前工作簿保存为当前目录下的xls文件,文件名为123

ThisWorkbook.SaveCopyAs ThisWorkbook.Path & "\123.xls"

'当前工作簿副本另存为当前目录下的xls文件,文件名为123

3.1.1.5关闭工作簿

语法:expression.Close(SaveChanges, Filename, RouteWorkbook)

ThisWorkbook.Close SaveChanges:=False '不保存关闭工作簿

3.1.2 工作表

3.1.2.1工作表名称

Worksheets("我的工作表").Name '返回“我的工作表”工作表的名称(即“我的工作表“)Worksheets(1).Name '返回第一个工作表的名称

Sheets(1).Name '返回第一个表(包括工作表、宏表、图表等)的名称

https://www.doczj.com/doc/f19676807.html, '返回当前表的名称

示例:遍历工作表

For Each shs In Sheets '或者For i = 1 To Sheets.Count

k = k + 1

Cells(k, 1) = https://www.doczj.com/doc/f19676807.html, '遍历所有表,返回到当前表的A列

Next

3.1.2.2新建工作表

语法:Add(Before, After, Count, Type)

Before——Variant 类型,可选。指定工作表对象,新建的工作表将置于此工作表之前。After——Variant 类型,可选。指定工作表对象,新建的工作表将置于此工作表之后。Count——Variant 类型,可选。要新建的工作表的数目。默认值为1。

Sheets.Add '在当前工作表前面新建工作表

Sheets.Add Sheets("abc") '在表“abc”前面新建工作表

Sheets.Add , Sheets("abc") '在表“abc”后面新建工作表

Sheets.Add after:=Sheets("abc") '在表“abc”后面新建工作表

Sheets.Add Count:=2 '在当前工作表前面新建两个工作表

Sheets.Add , , 2 '在当前工作表前面新建两个工作表

Sheets.Add , , , xlChart '在当前工作表前面新建一个图表

https://www.doczj.com/doc/f19676807.html, = "年月日" '新建一个名为“年月日”的工作表哦(注:重名会报错)

3.1.2.3移动工作表

语法:expression.Move(Before, After)

Before Variant 类型,可选。表示某工作表,欲移动的工作表将移到此工作表之前。如果已经指定了After,则不能指定Before。

After Variant 类型,可选。表示某工作表,欲移动的工作表将移到此工作表之后。如果已经指定了Before,则不能指定After。

Sheet1.Move Sheet3 '将Sheet1移动到Sheet3之前

Sheet1.Move , Sheet3 '将Sheet1移动到Sheet3之后

3.1.2.4复制工作表

语法:expression.Copy(Before, After)

Before Variant 类型,可选。指定某工作表,复制的工作表将置于此工作表之前。如果已经指定了After,则不能指定Before。

After Variant 类型,可选。指定某工作表,复制的工作表将置于此工作表之后。如果已经指定了Before,则不能指定After。

Sheet1.Copy , Sheets(Sheets.Count) '复制Sheet1到最后一个工作表之后(名称为“Sheet1(i)“)3.1.2.5工作表选择与激活

Sheet1.Select '选择Sheet1(不支持隐藏选取)

Sheet1.Activate '激活Sheet1(支持隐藏选取)

Worksheets.Select '选择所有工作表

Sheets.Select '选择所有表(包括工作表、宏表、图表等)

Worksheets(Array(1, 3, 5)).Select '选择第1、3、5的工作表

3.1.2.6保存工作表

Sheet1.Copy

ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\aaa.xls"

'另存为sheet1为该工作簿目录下的aaa.xls

示例:拆分到工作簿

Dim wk As Workbook, ss$, k%

Application.DisplayAlerts = False

For Each sht In Workbooks("aaa.xls").Sheets '对于任一个在aaa.xls的工作表

Set wk = Workbooks.Add '新建一个工作簿

k = k + 1 '计数

Workbooks(1).Sheets(k).Copy Workbooks(2).Sheets(1) '将第k个工作表复制到新工作表中

ss = ThisWorkbook.Path & "\" & https://www.doczj.com/doc/f19676807.html, & ".xls" '新工作表另存为xls,文件名为工作表名称 wk.SaveAs ss '保存

wk.Close

Next

Application.DisplayAlerts = True

3.1.2.7删除工作表

Application.DisplayAlerts = False

Worksheets("Sheet1").Delete

Application.DisplayAlerts = True

'删除活动工作簿的 Sheet3 工作表,并且不显示确认对话框

3.2 小技巧

3.2.1 Dir(表示一个文件名、目录名或文件夹名称)

语法:Dir[(pathname[, attributes])]

Pathname:可选参数。用来指定文件名的字符串表达式,可能包含目录或文件夹、以及驱动器。如果没有找到pathname,则会返回零长度字符串("")。

Attributes:可选参数。常数或数值表达式,其总和用来指定文件属性。如果省略,则会返回匹配pathname 但不包含属性的文件。

示例1:判断文件是否存在

Dim a$

a = Dir("c:\123.xls")

'判断c:\123.xls是否存在-若存在则返回文件名-不存在则为空

If a = "" Then

MsgBox "不存在" '

Else

MsgBox "存在"

End If

示例2:打开指定目录下的文件

Dim a$

a = Dir("c:\*.txt")

Workbooks.Open "c:\" & a '用Excel打开txt文件

Do

a = Dir

If a <> "" Then

Workbooks.Open "c:\" & a

Else

Exit Sub

End If

Loop

3.2.2

4. 页面设置

4.1 PageSetup

With ActiveSheet.PageSetup '页面设置

.BlackAndWhite = True '以黑白方式打印 .CenterHorizontally = True '设置水平居中打印

.CenterVertically = True '设置垂直居中打印.Draft = False '设置不打印图形

.PrintTitleRows = Rows(3).Address '设置第3行为顶端标题行 .PrintTitleColumns = Columns("A:C").Address '设置第A到C列为左端标题列 .PrintHeadings = True '设置打印标题

.PrintGridlines = True '设置打印单元格网格线

.PrintComments = xlPrintSheetEnd '设置以尾部附注的方式打印批注 .PrintQuality = Array(240, 140)

'设置打印质量为水平方向240,垂直方向140(打印机可能不支持)

.Zoom = 120 '设置打印缩放比例为120% .PaperSize = xlPaperA4 '设置纸张大小为 xlPaperA4 .FirstPageNumber = 10 '设置第一页的页号为10 End With

4.2 其他

5. 导入外部数据

示例:

With ActiveSheet.QueryTables.Add(Connection:= _

"TEXT;C:\IM.txt", Destination:=Range( _

"A1"))

.Name = "IM"

.FieldNames = True

.RowNumbers = False

.FillAdjacentFormulas = False

.PreserveFormatting = True

.RefreshOnFileOpen = False

.RefreshStyle = xlInsertDeleteCells

.SavePassword = False

.SaveData = True

.AdjustColumnWidth = True

.RefreshPeriod = 0

.TextFilePromptOnRefresh = False

.TextFilePlatform = 936

.TextFileStartRow = 1

.TextFileParseType = xlDelimited

.TextFileTextQualifier = xlTextQualifierDoubleQuote

.TextFileConsecutiveDelimiter = False

.TextFileTabDelimiter = True

.TextFileSemicolonDelimiter = False

.TextFileCommaDelimiter = False

.TextFileSpaceDelimiter = False

.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _

相关主题
文本预览
相关文档 最新文档