编程常用代码
Excel2007启用宏:OFFICE按钮→选项→信任中心→信任中心设置→宏设置
代码里可以命名名称,比如https://www.doczj.com/doc/ed10823983.html, = "data1" ,然后在公式中使用它
Debug.Print "7777" '在立即窗口中显示
Environ("Computername") '计算机名
Environ("userprofile")‘桌面路径
ActiveWindow.Caption="XXXXX" '在显示文件名的地方显示XXXXX
Windows(https://www.doczj.com/doc/ed10823983.html,).Visible = False '隐藏excel主窗口https://www.doczj.com/doc/ed10823983.html,[文件名]
在word中读取excel中数据
Set sht = GetObject(, "excel.application").ActiveSheet '假设要获取的内容为已经打开的excel文档的活动工作表
k = sht.Cells(2, 3) '假设要获取第1行第2列的单元格,亦可用range("b1")代替cells(1,2)
-------
文件和文件夹
当前文件夹的名称:CurDir
更改文件或文件夹的名称:(Name 原文件As 新文件)
检查文件或文件夹是否存在:m=Dir(文件,Nomal) m=Dir(文件夹,Folder)Directory
创建文件夹(MkDir "D:\文件夹名")
f = Dir("D:\省份分表", vbDirectory) '判断是否已经存在
If f = "" Then MkDir ("D:\省份分表") '如果不存在就建立
删除文件:(Kill "D:\文件夹名\成品.xls"
删除空文夹:(RmDir "D:\文件夹名")
---------
复制文件:(FileCopy)
For i = 101 To 10000
FileCopy "D:\迅雷.txt", "D:\文件夹名\" & i & "迅雷.txt"
Next
With Application.FileSearch
.Filename = "*.*"
.LookIn = ThisWorkbook.Path & "\分表"
.Execute
k = .FoundFiles.Count '文件夹中的文件个数
End With
Sub 生成目录() '有子文件夹也查到
Set fs = Application.FileSearch
With fs
.LookIn = "D:\暂用\" '设置要查找的起始目录
.Filename = "*.*"
.SearchSubFolders = True '是否查找子目录
.Execute '根据上面的设置执行查找
For i = 1 To .FoundFiles.Count '遍历文件
a = Dir(.FoundFiles(i))
Cells(i + 1, 3) = a
Next i
End With
End Sub
Shell "explorer.exe " & k & "\生成的表\", vbMaximizedFocus'展开文件夹
Sub动态读取指定文件夹名()
On Error Resume Next
Dim stMedd As String
stMedd = "请选择文件目录:"
Set obMapp = CreateObject("Shell.Application").BrowseForFolder(0, stMedd, &H1)
If Not obMapp Is Nothing Then
Directory = obMapp.self.Path & "\" '文件夹名
[G1].Value = Directory
Else
Exit Sub
End If
Call FilesList.FilesList
End Sub
If VBA.Dir("D:\S.xls") = "" Then MsgBox "文件没有找到" ‘判断文件不存
Sub 删除指定区间的图片()
For Each drt In ActiveSheet.DrawingObjects
If Not Intersect(drt.TopLeftCell, [C3:L16]) Is Nothing Then drt.Delete
Next
End Sub
变量
模块级变量的声明格式Public Directory
Dim x As Integer '声明变量
Byte (0到255的整数) Integer % (-32768+32768) Date (日期) String $ (65400个字符) Decimal (小数) Long & Single ! Currency @
Format(32, "0000")‘Format格式结果为:0032
数组
Dim Arr()
ReDim Preserve Arr(1 To r) ‘声明动态数组
Array函数Application.Transpose ‘转置
数组下限LBound(Arr)=0 ,数组上限UBound(Arr)=4
Erase arr ’清空数组
IsArray ’指出变量是否为一个数组
If Application.CountA(Arr)>0 Then '判断数组不为空
Range("A1:D1") = Array("'1001", "现金", 300000, Date) '在一行多列中依次输入不同数据
Range("A1:A4") = Application.Transpose(Array("1001", "现金", 300000, Date))在一列多行中次输入不同数Sub 字典()
r = Sheet1.Range("A65536").End(xlUp).Row '行数
Set w = CreateObject("scripting.dictionary")
For i = 2 To r
b = Sheet1.Cells(i, 2)
c = Sheet1.Cells(i, 3)
If Not w.exists(b & c) Then
w(b & c) = 1
Else
W(b & c) = W(b & c) + 1
End If
Next
[A2].Resize(w.Count, 1) = Application.Transpose(w.keys)
[B2].Resize(w.Count, 1) = Application.Transpose(w.items)
End Sub
Sub 用字典筛选多列()
r = Range("A65536").End(xlUp).Row '最后行数
Set w = CreateObject("scripting.dictionary")
For i = 2 To r
If Cells(i, 6) > 70 Then '语文分数为条件
w(Range(Cells(i, 1), Cells(i, 12))) = 1 '数据一行多列载入字典
End If
Next i
[N2].Resize(w.Count, 12) = Application.Transpose(Application.Transpose(w.keys)) '两次转置写入单元格
End Sub
Sub 字符串分列() '网页数据
For h = 2 To 44
m = Split(Cells(h, 1), " ") '以空格分开
k = UBound(m) + 1 '分出的列数
Cells(h, 13).Resize(1, k) = m
Next
End Sub
If "dfg"Like "*f*" Then判断字符串包含关系可用通配符
For Each st In Worksheets
With Chr(10) Exit For step 步长ElseIf Else Do While … Loop
Application.ScreenUpdating = False '禁用刷新
Application.DisplayStatusBar = False '禁用状态显示
Application.Calculation = xlCalculationManual '手动重算
Application.EnableEvents = False '禁用触发事件
ActiveSheet.DisplayPageBreaks = False '禁用新版本
Application.ScreenUpdating = true '启用刷新
Application.DisplayStatusBar = true'显示状态
Application.EnableEvents = true '启用触发事件
Application.Calculation = xlAutomatic '自动重算
ActiveSheet.DisplayPageBreaks = true '启用新版本
Application.SheetsInNewWorkbook = 1'设置工作簿内的工作表数
Application.SendKeys "%{down}" '自动打开数据有效性列表
Workbooks("学习.xls").Worksheets("Sheet1").Range("A4").ClearContents '从文件到单元格
Cells(4, 1) Rang("A4") [A4] '单元格
Range("H3").Select '选定单元格
Range("A65536").End(xlUp) '最后行单元数据
x=Range("A65536").End(xlUp).Row '行数
x = Range("e2").End(xlDown).Row ''向下查找
Range("IV1").End(xlToLeft) '最后列单元数据
Range("IV1").End(xlToLeft).Column '列数
UsedRange.Cells工作表使用区域的单元格
a = https://www.doczj.com/doc/ed10823983.html,edRange.Item(https://www.doczj.com/doc/ed10823983.html,edRange.Count).Row '格式最后行
b = https://www.doczj.com/doc/ed10823983.html,edRange.Item(https://www.doczj.com/doc/ed10823983.html,edRange.Count).Column '格式最后列
Cells(a, b) '最后一个单元格(不一定有数据)
(Cells(1, 1), Cells(a, b)) '数据最大区间起于A1单元格,止于最右下角单元格
f=Replace(mid(Cells(100,103).Address,2,2),"$","") ' 由列数得到列标CY
Cells.Find("*", , , , , 2).Row ' 工作表使用的有数据行数
Cells.Find("*", , , , , 2) .Column ' 工作表使用的有数据列数
IsNumeric判断数值
https://www.doczj.com/doc/ed10823983.html,edRange.Select '选定表1中使用的区域,如果要向下或右移在UsedRange.后加进offset(1,2) Range("a1").Copy Range("B1") '将A1单元数值(公式)和格式值复制到sheet3 B1中
注:Range("a1")不能用Cells()替代
Range("B1").Value = Range("a1").Value '将A1单元数值复制到sheet3 B1中
Range("C4:E7").Clear '清除格式和内容
Range("D4:E6").ClearContents '清除内容
ActiveWindow.VisibleRange.AddressLocal ' 返回屏幕上可以看到的区域
[a3].Value = Trim([a3].Value) '删除空格删左边Ltrim 删右边RTrim
[a:a].Replace "A", "" '将A列的“A”替换成空单元格匹配LookAt:=xlWhole
Application.SUBSTITUTE([A1]," ","") ‘清除空格
显示指定单元格
ActiveWindow.SmallScroll Down:=-65536 '向下滚动在最高处显示第1行
ActiveWindow.SmallScroll ToRight:=-255 '先向右移在最左边显示第1列
ActiveWindow.SmallScroll Down:=30 - 1 '再向上滚动在最处显示第30行
ActiveWindow.SmallScroll ToRight:=10 - 1 '再向左移在最左边显示第10列
Range("B2").Offset(1, 2).Select '以B2为基点,向下移1行,向右移2列
Selection.Resize(6, 9).Select '得到一个6行9列的区域
Range("B3:B" & k.Count + 2).TextToColumns , Other:=True, OtherChar:="/" ‘分列
[a:b].AdvancedFilter 2, [c1:c2], [g1] '高级筛选最简代码数据区间[a:b] 条件[c1:c2] 存放位置[g1]
Sheet1.[a:a].AdvancedFilter 2, "", [b5], Unique:=True 'Unique:=True (取不重复值)
[A1:D11].AdvancedFilter 2, , [E1], 1 '高级筛提取不重复值数据区间[A1:D11] 存放位置[E1]
MsgBox "行数为:" & ActiveCell.Row & Chr(10) & "列数为:" & ActiveCell.Column'当前行列数
Chr(10):空行
公式
Range("A1").NumberFormat '读出A1格式
Range("A1").Formula '读出A1中的公式
Range("D2").FormulaArray = "=SUM((A2:A6)*1)" '先在D2中输入数组公式
Range("D2").Copy Range("D3:D9,E2:E9,F2:F9") '复制、粘贴公式(区间连续或不连续,但不能包括D2)Selection.Formula = Range("e2").Formula '将E2中的普通公式填充到当前区域
For m = 2 To y '宏中动态引用公式(不适用于数组公式)
Range("m" & m) = Evaluate("SUMPRODUCT((sheet1!A2:A" & x & "=sheet2!A" & m & ")*(sheet1!B2:B" & x & "=sheet2!B" & m & ")*(sheet1!L2:L" & x & ">sheet2!L" & m & "))") + 1
Find方法的语法
<单元格区域>.Find (要查找的数据,,[数据类型],[XlWhole或者xlPart,用来指定所查找的数据是与单元格内容完全匹配还是部分匹配,默认值为xlPart])
Sub 由值查行列号() ‘Find方法
Set r = Range("a1:b12").Find([j6],,, XlWhole) ‘对占用内存较多的对象变量,不要时要记住set=nothing
On Error Resume Next ‘容错r = Empty(出错)
[K6] = r.Row '行号
[L6] = r.Column '列号
[m6] = r.Address '单元格
Set r=nothing‘置空对象
End Sub
Sub 数组查找()
Dim Arr()
x = Sheet1.Range("A65536").End(xlUp).Row '行数
y = Range("A65536").End(xlUp).Row '行数
ReDim Preserve Arr(1 To y)
For i = 1 To y
On Error Resume Next '容错
b = Cells(i, 1)
Set r = Sheet1.Range("a1:a" & x).Find(b, , , xlWhole)
If r = Empty Then 'Empty(出错)
Arr(i) = ""
Else
Arr(i) = Sheet1.Cells(r.Row, 2)
End If
Next
[B1].Resize(y, 1) = Application.Transpose(Arr)
End Sub
MATCH函数方法用于取得关键字的行数或列数
If IsNumeric(Application.Match(Cells(i, 1), .Range("B1:B" & r), 0)) Then
' 关键字不存在时会出错,上句不可少
m = Application.Match(Cells(i, 1), .Range("B1:B" & r), 0) ' 行数
Sub 查找()
Application.ScreenUpdating = False '禁用刷新
With Sheets("资料表")
x = .Range("R65536").End(xlUp).Row
y = Range("F65536").End(xlUp).Row
For i = 2 To y
If IsNumeric(Application.Match(Cells(i, 6), .Range("R1:R" & x), 0)) Then
m = Application.Match(Cells(i, 6), .Range("R1:R" & x), 0) ' 行数
.Range("N" & m & ":Q" & m).Copy Cells(i, 1)
End If
Next
End With
End Sub
x = [a1] '多条件语句
If x < 100 And x > 80 Then '第1句
[d5] = "好"
ElseIf x = 0 Then '第2句
[d5] = "最好"
Else '其他
[d5] = "错误"
End If
Select Case Sheets.Count '按条件选择执行宏
Case Is > 1
删除工作表
插入新表
Case Is = 1
插入新表
Case Else
End Select
End Sub
ThisWorkbook.Path (或CurDir) '当前工作簿地址
https://www.doczj.com/doc/ed10823983.html, 当前工作簿名称
ThisWorkbook.FullName '当前工作簿路径和名称
https://www.doczj.com/doc/ed10823983.html, '当前工作表名
Sheet1.ScrollArea = "B4:H12" '限制表中显示的区间
Private Sub Workbook_Open() '打开工作簿时执行
ActiveWindow.Close Savechanges:=True '不保存关闭当前工作簿
Private Sub Workbook_BeforeClose(Cancel As Boolean) '关闭工作簿时执行Application.Quit'不保存退出
Workbooks(1).Close SaveChanges:=False ‘不保存关闭指定工作簿ActiveWorkbook.Save '保存退出
Workbooks.Open Filename:=ThisWorkbook.Path & "\档案.xls", Password:="1234" '如文件:档案,有密码1234 用这句代码可以打开excel 模板文件类型:xlt
打开另一程序
m = Shell("C:\Documents and Settings\Administrator\桌面\kk.exe", 1)
AppActivate m
For Each c In https://www.doczj.com/doc/ed10823983.html,s '隐藏[显示]定义名
c.Visible = False
Next c
MsgBox "宏" & Chr(13) & Chr(13) & "真难学啊!", , "感叹"'消息框格式Chr(13) 换行
InputBox函数:格式如下,第一项为必须外,其余为可选项,可以省略不写,XY坐标为在窗体上的准确位置。当用户点取消时,返回一个空的字符串(" ")。为了省略某些位置参数,必须加入相应的逗号分界符。InputBox("对话框中的提示信息","对话框的标题","缺省的返回值",X坐标,Y坐标)
X坐标和Y坐标当你需要为InputBox窗口指定在屏幕中的位置时用的,单位为象素,一般省略不写。Val文本变数值
Sub 选定单元格() ‘InputBox方法Application.Interactive = True
Dim a As Range
On Error GoTo VeryEnd'[当按下“取消”按钮时,程序会出错,加上此句与后边VeryEnd:相对应,这样当出错时,程序结束或Application.Interactive = True]
Set a = Application.InputBox(prompt:="使用鼠标选择单元格区域:", Title:="格式化区域", Type:=8)
a.NumberFormat = "0.00" '单元格式:两位数
VeryEnd:
End Sub
Sub 合并单元格()
Application.DisplayAlerts = False '合并时不提问
For h = Range("A65536").End(xlUp).Row To 4 Step -1
If Cells(h, 10) = Cells(h + 1, 10) Then Range(Cells(h, 10), Cells(h + 1, 10)).Merge
Next
End Sub
Range("B4:D5").Select '合并居中
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.ReadingOrder = xlContext
End With
Selection.Merge' (合并单元格)
――――
[a1:g18].Borders.LineStyle = 1 '加细边框
Range("A6:F10").Borders.LineStyle = xlContinuous '加细边框
Range("A6:F10").BorderAround Weight:=xlThick '加边粗框
Range("A6:F10").Borders.LineStyle = xlNone '去边框
――――
With [J3:K257]
.HorizontalAlignment = xlCenter '居中
.VerticalAlignment = xlCenter '居中
End With
Sub 循环() ‘Exit For 跳出循环end
x = Range("A65536").End(xlUp).Row '声明最后一行的行号
For h = 5 To x '从第1行到最后一行step 步长
If Cells(h, 1) > 0 Then '判断、赋值
Cells(h, 2) = "大于零"
ElseIf Cells(h, 1) = 0 Then
Cells(h, 2) = "等于零"
ElseIf Cells(h, 1) < 0 Then
Cells(h, 2) = "小于零"
End If
Next h
End Sub
Sub行列多循环()
a = [p2] - 1
For b = 1 To 11 Step 2
For c = 4 To 28
a = a + 1'此句决定其数据不同
If a > [p3]Then Exit Sub '此句在达到最大值时退出循环
Cells(c, b) = a
Next c, b
End Sub
Private Sub Worksheet_Change(ByVal Target As Range) '单元格触发事件[输入即保存] If Target <> "" Then '没有选定或输入字符不触发
ActiveWorkbook.Save '保存
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) '鼠标选定触发Cells.Interior.ColorIndex = 0 '整个工作表无色
Target.Interior.ColorIndex = 35 '鼠标选定区域变色
End Sub
sheets("数据").Visible=xlSheetVeryHidden ‘隐藏工作表
sheets("数据").Visible=xlSheetVisible ‘显示工作表
https://www.doczj.com/doc/ed10823983.html, = "数据" '插入名为数据的工作表
Sub 删除工作表() '只保留最左边那一个
Dim mysheet As Worksheet
If Worksheets.Count > 1 Then '有2个以上才删除
Worksheets(2).Select
Application.DisplayAlerts = False '删除表时不提问
For Each mysheet In Worksheets
ActiveWindow.SelectedSheets.Delete
Next mysheet
End If
End Sub
Sub 工作表合并() '当前表、目录表和统计表不合并,其他表都合并
For Each st In Worksheets
If https://www.doczj.com/doc/ed10823983.html, <> https://www.doczj.com/doc/ed10823983.html, And https://www.doczj.com/doc/ed10823983.html, <> "目录" And https://www.doczj.com/doc/ed10823983.html, <> "统计" Then
https://www.doczj.com/doc/ed10823983.html,edRange.Offset(2, 0).Copy [a65536].End(xlUp).Offset(1, 0)
End If
Next
End Sub
Sub生成目录()
Dim myPath As String
Dim myFileName As String
Dim i As Long
myPath = ThisWorkbook.Path & "\" '指定文件夹
myFileName = Dir(myPath, 0)
i = 0
Do While Len(myFileName) > 0
Cells(i + 1, 1) = Left(myFileName, Len(myFileName) - 4) '生成目录
myFileName = Dir()
i = i + 1
Loop
End Sub
Sub批量修改文件名()
aaa = ThisWorkbook.Path
h = 2
Do
oldname = Cells(h, 2)
newname = Cells(h, 1)
If oldname = Empty Then Exit Do
On Error Resume Next ‘出错时继续下一步m=Err.Number[错误号数,m=0,无错]
Name aaa & "\" & oldname & ".xls" As aaa & "\" & newname & ".xls" '实际用时就改一下文件后辍名On Error GoTo 0
h = h + 1
Loop
End Sub
Sub 删除工作簿()
On Error Resume Next
Kill "D:\123\111.xls "
End Sub
Sub 列出工作表名() '用到循环
For k = 1 To Sheets.Count '工作表总数Sheets.Count
Cells(k, 1) = Sheets(k).Name '工作表名存放位置Cells(k, 1) 第K个工作表名Sheets(k).Name Next
End Sub
Sub 删除所有定义名称()
Dim n As Name
For Each n In https://www.doczj.com/doc/ed10823983.html,s
n.Delete
Next
MsgBox "所有名称已被删除!"
End Sub
Sub 计算运行时间()
Dim Start As Double, Finish As Double
Start = Timer '开始时间
'--------------------------------------
Worksheets(1).Range("H1:H40000").Replace "4", "4.5"'过程
'--------------------------------------
Finish = Timer '结束时间
MsgBox "本次运行的时间是:" & Finish - Start & "秒"
End Sub
Sub 导入表2并填色()
Sheets(1).Rows("13:22").Copy Sheets(2).Rows("2:11") '表1复制到表2(全部)
Sheets(2).Rows("2:11")https://www.doczj.com/doc/ed10823983.html, = "黑体" '将这个范围字体格式为“黑体”
Sheet(2).Range("a3").Interior.ColorIndex = 6 '在A3单元中填进黄色
End Sub
Sub 判断工作表是否存在()
Dim sh As Worksheet
Dim d$
d = Day([r5]) & "日" '新表名来源
For Each sh In Worksheets
If https://www.doczj.com/doc/ed10823983.html, = d Then n = n + 1
Next
If n = 0 Then '不存在
Worksheets.Add after:=Sheets(Sheets.Count) '在所有表最右边插入一表
https://www.doczj.com/doc/ed10823983.html, = d '新表名为d
ElseIf n > 0 Then '表存在
[m26] = "SSSSS" '在M26中输入字母
End If
End Sub
Sub判断工作表是否存在()
r = InputBox("", "")
For h = 1 To Sheets.Count
If r = Sheets(h).Name Then
MsgBox r & "存在"
End
End If
Next
MsgBox r & "不存在"
End Sub
Sub汇总()
Application.ScreenUpdating = False
x = Sheet1.Range("A65536").End(xlUp).Row '最后行数A VG 算术平均数
With CreateObject("adodb.connection")
.Open "provider=microsoft.jet.oledb.4.0;extended properties='Excel 8.0;hdr=no;';data source=" & ThisWorkbook.FullName
[p4].CopyFromRecordset .Execute("select f1 from[sheet1$a3:n" & x & "] group by f1")
.Close
End With
Application.ScreenUpdating = true
End Sub ‘数据库无标题:hdr=no数据库有标题:hdr=yes
'条件取不重复值where f4>=3 group by f5
Sub 更改透视表字段为求和()
For h = 2 To 21
m = Cells(4, h).Value
Cells(4, h).Select
ActiveSheet.PivotTables("数据透视表1").PivotFields(m).Function = xlSum
Next
End Sub
Sub 错误处理()
Dim I As Long
On Error Resume Next' 指定发生错误时不处理,直接运行下一条语句
I = "A1" ' 发生错误,由于已经指定了发生错误时不处理,故Err对象立即返回直接运行下一条语句。
Debug.Print "被忽略的错误,错误代码:" & Err.Number & " 错误信息" & Err.Description & " 错误源:" & Err.Source & " 当前I的值=" & I
Err.Clear ' 清空所有错误记录
On Error GoTo ERROR1 ' 指定下面的错误发生时直接跳转至Error1标号处
I = 2147483648# ' 发生错误,由于指定了跳转,故直接转至Error1,而不会再执行下面的语句
I = 100
Debug.Print "程序正常返回,当前I的值=" & I
Exit Sub
ERROR1:
Debug.Print "发生错误,错误代码:" & Err.Number & " 错误信息" & Err.Description & " 错误源:" & Err.Source & " 当前I的值=" & I
End Sub
Sub 调出窗体()
UserForm1.Show 0
End Sub
LoadPicture函数返回图片对象Image1.Picture = LoadPicture("E:\图片\6.jpg")
Image1.Picture = Nothing '清空图片
Private Sub UserForm_Initialize() '初始化装入工作表名
Set d = CreateObject("scripting.dictionary")
For i = 1 To Worksheets.Count
d(Sheets(i).Name) = 1
Next
ComboBox7.List = d.keys
End Sub
AppActivate Application.Caption '焦点移到工作表
TextBox2.SetFocus‘用户窗体控件的激活
TextBox1.Activate‘工作表控件的激活
Application.SendKeys "{HOME}" 窗体滚动条停于上边缘
For s = 1 To 16
Controls("TextBox" & s).Value = "" ‘控件循环清空
Next
IsDate(m)= True 判断日期
'点×无效
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
End Sub
'点×无效
Unload UserForm1'窗体退出
Application.Visible = True '在窗体退出后,显示excel主窗口条形码控件BarCodeCtrl1
Private Sub CommandButton1_Click() ‘进度条
For t = 1 To 60000
ProgressBar1.Value = t / 100
DoEvents '此句作用:1、点按钮2可终止循环2、Label1.Caption可实时显示Label1.Caption = "程序运行了" & t / 600 * 100 & "%"
Next
End Sub
LEFT(1.369,InStr(1.369,".")+2) ’截取指定位数的数字
s = Format(Date, "[DBNum1][$-804]yyyy""年""m""月""d""日"" aaaa;@") MsgBox "今天是" & s
年Year(Date) 月Month(Date) 日Day(Date) 日期DateSerial(2010, 4,1) 第n月天数Day(DateSerial(2010, n+1,0))
Format(Date, "aaaa") '星期几
Format(Date, "yyyy") '年
Format(Date, "m") '月
Format(Date, "d") '日
Application.Wait Now + TimeValue("00:00:05")'延时执行
Sub 缓缓输入句子()
m = Array("好", "好", "学", "习", "天", "天", "向", "上")
For i = 0 To 7
Application.Wait Now + TimeValue("00:00:02") ' 延时执行
[D5] = [D5] & m(i)
Next
End Sub
CreateObject("SAPI.SpVoice").Speak h & "秒" '语音读出
判断英文字母:Mid("S好tr", 3, 1) Like "[a-zA-Z]" '