文档库 最新最全的文档下载
当前位置:文档库 › VBA笔试习题

VBA笔试习题

VBA笔试习题
VBA笔试习题

1.

程序段

For S=5 To 10 Step 1

S=2*S+1

Next S

该循环执行的次数是

A 1

B 2

C 3

D 4

参考答案:A

提示:执行一次后S=2*5+1=11,再加步长1,得S=12,已经超过了S的终点值,所以只运行一次就结束循环。

可创建一个模块,插入一个子过程,然后输入上述程序,并在循环体中加入一行debug.print来测试运行情况.

2

Dim I As Integer

I=Int(-3.2)

则I的值为

A -3

B -4

C 3

D 3.2

参考答案:B

提示: 可以查找VBA的帮助, 输入关键字int搜索后, 将显示有关int函数的详尽解释, 大部分情况下还有示例. 如本题, 解释为:

返回参数的整数部分。

语法

Int(number)

Fix(number)

必要的number 参数是Double或任何有效的数值表达式。如果number 包含Null,则返回Null。

说明

Int 和Fix 都会删除number 的小数部份而返回剩下的整数。

Int 和Fix 的不同之处在于,如果number 为负数,则Int 返回小于或等于number 的第一个负整数,而Fix 则会返回大于或等于number 的第一个负整数。例如,Int 将-8.4 转换成-9,而Fix 将-8.4 转换成-8。

Fix(number) 等于:

Sgn(number) * Int(Abs(number))

示例为:

Int 函数,Fix 函数示例

本示例说明Int 及Fix 函数在返回某数值的整数部分时有何不同。当参数为负数时,Int 函数返回小于或等于该参数之最大整数,而Fix 函数则返回大于或等于该参数之最小整数。

Dim MyNumber

MyNumber = Int(99.8) ' 返回99。

MyNumber = Fix(99.2) ' 返回99。

MyNumber = Int(-99.8) ' 返回-100。

MyNumber = Fix(-99.8) ' 返回-99。

MyNumber = Int(-99.2) ' 返回-100。

MyNumber = Fix(-99.2) ' 返回-99。

3

程序段的输出结果是( )

Dim i

i=1234

debug.print len(i)

A)16

B)8

C)2

D)4

参考答案:D

提示:本题中变量i并未说明数据类型,此时系统默认为变体型,其长度为4,如果为整型/长整型/单精度/双精度时,其长度是不一样的.可创建模块试一下.

4

下列程序的输出结果是

Public Sub test()

Dim x, i As Integer

x = 0

For i = 1 To 10 Step 2

x = x + i

i = i * 2

Next

Debug.Print i

End Sub

A 22

B 10

C 11

D 16

参考答案:A Array

提示:第一圈后:x=0+1=1, i=1*2+2=4

第二圈:x=1+4=5, i =4*2+2=10

第三圈:x=5+10=15, i=10*2+2=22

注意:本题中x与输出结果无关, 属于题目的干扰变量, 可以不考虑.

5

下列表达式中为假的是

A 4>3

B 4 or (3>2)=-1

C 4 and (3<2) =1

D Not(3>=4)

参考答案:C

提示:A选项为真;

B 选项根据优先级(算术>关系>逻辑),相当于

4 or ((3>2)=-1),整个表达式为真(-1);

C 选项相当于

4 and ((3<2)=1)

中的3<2为假,则((3<2)=1)为假,整个式子为假

D选项中,3>=4为假,取Not后为真

也可以用VBE的Debug.print直接输出每个关系结果.

另外注意: 当转换其他的数值类型为Boolean 值时,0 会转成False,而其他的值则变成True。当转换Boolean 值为其他的数据类型时,False 成为0,而True 成为-1。

即: 0值对应False, 其它数值对应True.

6

下列程序运行后,则变量J的值为

Private Sub fun()

Dim J As Integer

J=5

Do

J=J+2

Loop While J>10

End Sub

B 7

C 9

D 11

参考答案:B

提示:Do…Loop While循环时,每次先执行运算,再验证条件,但J=7时已经不满足J>10,所以只循环一次即结束。

本题中,如果条件改为J<10,则结果是11。

如果本题中的条件格式为Loop until,则结果正好与上面的条件格式相反。

即需要比较下四种情形:

Loop While J>10 相当于Loop Until J<=10

Loop While J<10 相当于Loop Until J>=10

另外,要了解“Do While 条件… Loop”与“Do …Loop While 条件”的差异;“Do Until 条件… Loop”与“Do …Loop Until 条件”的差异

7

下列程序运行后S的值是

Dim I As Integer, S As Integer

S=0

For I=1 to 10 step 1

S=S+I

Next

A 0

B 10

C 55

D 无限

参考答案: C

8

设有如下语句块

Private Sub test()

Dim sum as double, x as double

sum=0

n=0

For i=1 to 5

n=n+1

sum=sum+x

next i

debug.print sum

End Sub

则该程序的运行结果相当于某个数学表达式,这个表达式是

(A) 1+1/2+2/3+3/4+4/5

(B) 1+1/2+1/3+1/4+1/5

(C) 1/2+2/3+3/4+4/5

(D) 1/2+1/3+1/4+1/5

参考答案: C

提示:每一次循环后的结果如下:

第1次循环:x=0, n=1, sum=0

第2次循环:x=1/2, n=2, sum=1/2

第3次循环:x=2/3, n=3, sum=1/2+2/3

第4次循环:x=3/4, n=4, sum=1/2+2/3+3/4

第5次循环:x=4/5, n=5, sum=1/2+2/3+3/4+4/5

Excel VBA循环语句

l For… next for i=初始值 to 结束值 step 步长值 …… next 具体解释一下,初始值指的是循环开始的值,结束值指的是循环结束的值,实质上就是i值得一个判断,如果i值在起始值和结束值之间,那么进入循环语句,然后i值每运行到next语句后会自动加一个步长值,直至i值超出了初始值到结束值这个范围,循环才会结束。这里要说明一下”step 步长值“往往是省略掉的,省略掉的话,步长取默认值为1。下面将以一段小实例来具体说明这个结构的用法: 实例:在sheet1工作表中一次输出1到10这个数,显示在第一列中。 Sub 循环语句() Dim i As Integer For i = 1 To 10 Step 2 Cells(i, 1) =i Next End Sub Sub 循环语句() Dim i As Integer For i = 10 To 1 Step -1 Cells(i, 1) =i Next End Sub l For each… next For each 对象变量 in 对象集合 …… next 具体解释一下,这里我们看到和上一个结构的而不同的是上面一种结构主要是数值变量,而这种结构是对象变量。什么意思呢?each……in指的是在这个对象集合里面,一次将每一个对象都遍历一边。同样的道理,执行到next后对象自动指到下一个。具体我们来看一下下面的一个实例吧 实例:给一个数据区域内的所有单元格赋值,从1开始。 Sub 循环语句() Dim i As Integer For Each c In Range("a1:c5") i = i + 1 c.Value = i Next End Sub

使用VBA操作Word表格

使用VBA操作Word表格 一、生成表格 Private Sub CreateTable(mRows As Integer, mColumns) Dim mRange As Range Set mRange = Start:= End:= SelfGenTable = NumRows:=mRows, NumColumns:=mColumns) End Sub 上面过程的作用是在活动文档的末尾插入一个mRows行,mColumns列的表格。 二、在读写表格中的单元格 写入单元格使用如下代码: (Row:=curRow, Column:=curColumn). "文本" 上面代码的做用时在curRow行,curColumn列处插入字符“文本”。 其中TableObject为表格对象,如果使用了生成表格中的例子,那么可以用SelfGenTable 来替代TableObject。 三、调整单元格对齐方式 水平对齐设置 水平对齐常数(具体的常数可以查看帮助文件的说明) 如何选择单元格 选定特定单元格 (Row:=1,Column:=1).Select’选定单元格1,1 选定行 (i).Select’选定第i行 选定列 (i).Select’选定第i列 选定整个表格 首先执行表格元素选择程序,然后再使用设置对齐方式。 垂直对齐方式 垂直对齐常数 也是首先选择表格元素,可以使单个单元格,单个行、单个列或者整个表格。似乎也可以同时选择多个单元格、多个行、多个列,有兴趣的朋友可以自行寻找答案。 四、设置表格边线类型 下面的代码对整个表格的所有边线设置成细实线: With Selection .Borders(wdBorderBottom).LineStyle = wdLineStyleSingle .Borders(wdBorderLeft).LineStyle = wdLineStyleSingle .Borders(wdBorderRight).LineStyle = wdLineStyleSingle .Borders(wdBorderTop).LineStyle = wdLineStyleSingle .Borders(wdBorderHorizontal).LineStyle = wdLineStyleSingle .Borders(wdBorderVertical).LineStyle = wdLineStyleSingle End With 同样是对Selection进行设置,所以可以依照上面的方法对特定的单元格、行或者列的边线

Excel VBA实例教程 #056:遍历工作表中的图形

工作表中的多个图形,如果使用系统缺省名称,如“文本框1”、“文本框2”这样前面是固定的字符串,后面是序号的,可以使用For...Next 语句遍历图形,如下面的代码所示。 1.Sub ErgShapes_1() 2. Dim i As Integer 3. For i = 1 To 4 4. Sheet1.Shapes("文本框 " & i).TextFrame.Characters.Text = "" 5. Next 6.End Sub 代码解析: ErgShapes_1过程清除工作表中四个图形文本框中的文字。 第3行到第5行代码,使用Shapes属性在工作表上的三个图形文本框中循环。 Shapes属性返回Shapes对象,代表工作表或图形工作表上的所有图形,可以使用Shapes(index)返回单个的Shape对象,其中index是图形的名称或索引号。 返回单个的Shape对象后使用TextFrame 属性和Characters方法清除文本框中的字符,关于Shape对象的TextFrame 属性和Characters方法请参阅技巧53 。 如果图形的名称没有规律,可以使用For Each...Next 语句循环遍历所有图形,根据Type属性返回的图形类型进行相应的操作,如下面的代码所示。 1.Sub ErgShapes_2() 2. Dim myShape As Shape 3. Dim i As Integer 4. i = 1 5. For Each myShape In Sheet1.Shapes 6. If myShape.Type = msoTextBox Then 7. myShape.TextFrame.Characters.Text = "这是第" & i & "个文本框" 8. i = i + 1 9. End If 10. Next 11.End Sub 代码解析: ErgShapes_2过程在工作表中的所有图形文本框中写入文本。 第5行代码使用For Each...Next 语句循环遍历工作表中所有的图形对象。 第6行到第9行代码如果图形对象是文本框则在文本框中写入文本。其中第6行代码根据Type属性判断图形对象是否为文本框,应用于Shape对象的Type属性返回或设置图形类型,MsoShapeType类型,请参阅表格54 1 。

VBA操作网页读取数据自动填入EXCEL表中

VBA操作网页读取数据自动填入EXCEL表中 Sub a正式查分程序() '运行时会出现错误提示,中止程序,更改j初值后重新运行 Dim ie, dmt Dim i, j, k, bb, nianfen As Integer Dim text1 As String '存储考号 Dim text2 As String '存储报名序号 Dim text3 As String '存储浏览器地址 Dim fuwuqi As String '存储服务器地址 Dim tijiao As String '存储提交命令 nianfen = 2012 '存储年份,每年更改“2012” fuwuqi = "http://218.28.109.125:81/cjcx/tmp_cx_zzcj.php" '自行更改为可用服务器 tijiao = "&cmdok=???" 'cmdok=???为提交命令 bb = Sheet3.Range("a65536").End(xlUp).Row '计算当前工作表sheet3的有效行数,需自行更改“sheet3” ' On Error Resume Next

'主程序 k = 0 For j = 2 To bb '循环变量从2到sheet2最后一行,出错后起始值改为当前行 k = k + 1 ' If k > 20 Then '每20行,可以增大“20”数值 ActiveWorkbook.Save '自动保存 ActiveWindow.ScrollRow = j '自动滚屏到当前行 k = 0 '循环变量清零 End If text1 = Cells(j, 1) '从当前行第一列读取考号,根据情况调整列“1”数值 text2 = Cells(j, 2) '从当前行第二列读取报名序号,根据情况调整列“2”数值 '生成查询地址 text3 = fuwuqi & "?textdate=" & nianfen & "&textkh=" & text1 & "&textzjhm=" & text2 & tijiao '创建网页对象

Excel-VBA操作文件四大方法之四利用API函数来处理文件

Excel-VBA操作文件四大方法之四 四、利用API函数来处理文件 通过前面三种方法的介绍,你是否已经觉得足够了?是的,前面的方法完全可以应付几乎所有的文件操作。但是为了普及一下API,展示一下API的魅力,最后向大家介绍一下如何利用API函数来处理文件。另一方面也是本人对API情有独钟,为她做一下广告,呵呵。大家对API的强大也是有所耳闻了,在文件操作方面,API自然毫不逊色。 说明:为了文章简洁,我们先给出API函数的名称及功能,其完整的声明及常数就不再一一细诉,只在示例中给出其完整用法。 (一)处理驱动器及目录 下面是windows中提供的对于目录进行操作的API函数及其功能: CreateDirectory,CreateDirectoryEx 创建一个新目录 GetCurrentDirectory 在一个缓冲区中装载当前目录 GetDiskFreeSpace,GetDiskFreeSpaceEx 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量 GetDriveType 判断一个磁盘驱动器的类型 GetFullPathName 获取指定文件的完整路径名 GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母 GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径GetSystemDirectory 这个函数能取得Windows系统目录(System目录)的完整路径名。在这个目录中,包含了所有必要的系统文件。根据微软的标准,其他定制控件和一些共享组件也可放到这个目录。通常应避免在这个目录里创建文件。在网络环境中,往往需要管理员权限才可对这个目录进行写操作 GetTempPath 获取为临时文件指定的路径 GetVolumeInformation 获取与一个磁盘卷有关的信息 GetWindowsDirectory 这个函数能获取Windows目录的完整路径名。在这个目录里,保存了大多数windows应用程序文件及初始化文件 RemoveDirectory 删除指定目录 SetCurrentDirectory 设置当前目录 SetVolumeLabel 设置一个磁盘的卷标(Label) 下面通过几个例子来详细的了解一下其中主要的几个函数及其用法: 1、GetLogicalDrives 作用:判断系统中存在哪些逻辑驱动器字母 声明:Declare Function GetLogicalDrives Lib "kernel32" Alias "GetLogicalDrives" () As Long 说明:此函数的返回值类型为Long,这个结构中的二进制位标志着存在哪些驱动器。其中,位0设为1表示驱动器A:存在于系统中;位1设为1表示存在B:驱动器;以次类推 示例: Public Sub Get_LogicalDrives() Dim LDs As Long, Cnt As Long, sDrives As String LDs = GetLogicalDrives sDrives = "Available drives:" For Cnt = 0 To 25 If (LDs And 2 ^ Cnt) <> 0 Then

Excel中用VBA-Worksheet基本操作应用示例

Application对象及其常用方法基本操作应用示例 Application对象代表整个Microsoft Excel应用程序,带有175个属性和52个方法,可以设置整个应用程序的环境或配置应用程序。 示例01-01:体验开/关屏幕更新(ScreenUpdating属性) Sub 关闭屏幕更新() MsgBox "顺序切换工作表Sheet1→Sheet2→Sheet3→Sheet2,先开启屏幕更新,然后关闭屏幕更新" Worksheets(1).Select MsgBox "目前屏幕中显示工作表Sheet1" Application.ScreenUpdating = True Worksheets(2).Select MsgBox "显示Sheet2了吗?" Worksheets(3).Select MsgBox "显示Sheet3了吗?" Worksheets(2).Select MsgBox "下面与前面执行的程序代码相同,但关闭屏幕更新功能" Worksheets(1).Select MsgBox "目前屏幕中显示工作表Sheet1" & Chr(10) & "关屏屏幕更新功能" Application.ScreenUpdating = False Worksheets(2).Select MsgBox "显示Sheet2了吗?" Worksheets(3).Select MsgBox "显示Sheet3了吗?" Worksheets(2).Select Application.ScreenUpdating = True End Sub 示例说明:ScreenUpdating属性用来控制屏幕更新。当运行一个宏程序处理涉及到多个工作表或单元格中的大量数据时,若没有关闭屏幕更新,则会占用CPU 的处理时间,从而降低程序的运行速度,而关闭该属性则可显著提高程序运行速度。 示例01-02:使用状态栏(StatusBar属性) Sub testStatusBar() Application.DisplayStatusBar = True '开启状态栏显示 '赋值状态栏显示的文本 Application.StatusBar = "https://www.wendangku.net/doc/cf10753170.html," End Sub 示例说明:StatusBar属性用来指定显示在状态栏上的信息。若不想再显示状态栏文本,可使用Application.StatusBar = False语句关闭状态栏显示,也可以在程序开始将原先的状态栏设置存储,如使用语句oldStatusBar = Application.DisplayStatusBar将状态栏原来的信息存储在变量oldStatusBar,在程序运行完成或退出时,将变量重新赋值给状态栏,如使用语句Application.DisplayStatusBar = oldStatusBar,以恢复状态栏原状。

ExcelVBA中for循环语句地用法

Excel VBA中for循环语句的用法 听语音 ? ?| ?浏览:21306 ?| ?更新:2015-05-30 16:57 ?| ?标签:excel ?1 ?2 ?3 ?4 ?5 ?6 分步阅读 for循环语句在VBA中扮演着比较重要的角色,为我们批量的处理表格数据提供了一个很好的途径,下面小编根据自己的一些亲身经验为大家分享一下Excel VBA中for循环语句的两个用法吧!

?office Excel软件 ?具备一定的VB基础更好 1. 1 我们常用的for循环语句有两种,一个是for ……next结构;一个是For each……next结构。这两种结构主要都是针对多数据循环遍历的时候用到的。 那么下面我将分别来介绍一下两种循环结构的具体用法,首先还是要打开VBA编辑器 2. 2 1.for……next结构 这个结构一般是这样的: for i=初始值to 结束值step 步长值 ……

next 具体解释一下,初始值指的是循环开始的值,结束值指的是循环结束的值,实质上就是i值得一个判断,如果i值在起始值和结束值之间,那么进入循环语句,然后i值每运行到next语句后会自动加一个步长值,直至i值超出了初始值到结束值这个围,循环才会结束。这里要说明一下”step 步长值“往往是省略掉的,省略掉的话,步长取默认值为1。下面将以一段小实例来具体说明这个结构的用法: 实例:在sheet1工作表中一次输出1到10这个数,显示在第一列中。 程序: Sub 循环语句() Dim i As Integer For i = 1 To 10 Cells(i, 1) = i Next End Sub

VBA操作文本文件

转载]VBA使用FileSystemObject将读取或写入文本文件 (2011-04-28 08:47:34) 转载▼ 标签: 转载 原文地址:VBA使用FileSystemObject将读取或写入文本文件作者:添成VBA使用FileSystemObject将读取或写入文本文件 原文链接: https://www.wendangku.net/doc/cf10753170.html,/?viewspace-662523 https://www.wendangku.net/doc/cf10753170.html,/?viewspace-662526 https://www.wendangku.net/doc/cf10753170.html,/wengene/archive/2010/08/12/5806500.aspx 在网上找到一样的版本,所以就都列在这里 ********************************************************************* ************** *************************** 正文 ******************************** ************** ********************************************************************* ************** 有时,我们需要将一个文本文件中的数据读取到Excel单元格中,或将指定单元格的内容按指定的格式导出到文本文件中,这时,我们就需要使用 Scripting.FileSystemObject对象来进行操作。在接下来的几篇里我们介绍如何使用FileSystemObject对象操作文本文件的。工欲善其事,必先利其器,那么我们就先花几篇文章来详细介绍下FileSystemObject对象。 一、如何创建FileSystemObject对象 在VBA中,是通过CreateObject函数返回FileSystemObject对象。 示例:

Excel VBA常用技巧代码

1.删除重复行 (1) 2.ActiveX控件的相关操作 (2) 3.单元格内容匹配 (2) 4.单元格填充公式 (3) 5.弹出打开对话框 (3) 6.操作文件夹下的所有工作簿 (3) 7.获取数据区域的最后一行和最后一列 (4) 8.获取列的字母顺序[A~IV] (4) 9.自定义函数返回数组并填充至单元格区域 (4) 10.绘制曲线图 (5) 11.单元格区域拷贝 (6) 12.操纵数据库(查、增、删、改) (6) 13.待定XX (7) 1.删除重复行 关键字:[a65536].End(xlUp).Row、Offset()、相关双层循环 Sub RemoveDuplicate() '删除重复行 For i = [a65536].End(xlUp).Row - 1 To 1 Step -1 '按倒叙删除 For j = [a65536].End(xlUp).Row To i + 1 Step -1 If Cells(i, 1).Value = Cells(j, 1).Value Then Rows(i).Delete End If Next Next End Sub Sub RemoveItem() '删除相邻重复,但不删除隔行重复 Dim i As Long With Range("A2") '以A2为基准进行单元格偏移 Do While .Offset(i, 0) If .Offset(i, 0).Value = .Offset(i - 1, 0).Value Then .Offset(i, 0).EntireRow.Delete i = i + 1 Loop End With End Sub

使用VBA操作文件

使用VBA操作文件(4):FileSystemObject对象 使用VBA操作文件(4):FileSystemObject对象 FileSystemObject对象位于File System对象模型的最高层,并且是该层次中惟一可以在外部创建的对象,也就是说它是惟一能使用New关键字的对象。 FileSystemObject对象有许多用来操作文件系统的方法和属性。下面先看一个例子,如下面的代码: Sub FileInfo() Dim fs As Object Dim objFile As Object Dim strMsg As String Set fs = CreateObject("Scripting.FileSystemObject") Set objFile = fs.GetFile("C:\Windows\System.ini") strMsg = "文件名:" & https://www.wendangku.net/doc/cf10753170.html, & vbCrLf strMsg = strMsg & "硬盘:" & objFile.Drive & vbCrLf strMsg = strMsg & "创建日期:" & objFile.DateCreated & vbCrLf strMsg = strMsg & "修改日期:" & objFile.DateLastModified & vbCrLf MsgBox strMsg, , "文件信息" End Sub FileInfo过程首先使用CreateObject函数创建一个FileSystemObject对象,用来访问计算机的文件系统。然后,使用GetFile方法创建一个File对象并返回对System.ini文件的引用。接着,利用File对象的Name属性、Drive属性、DateCreated属性、DateLastModified属性返回文件的相应信息。 下面详细介绍FileSystemObject对象的方法和属性。 BuildPath方法 其语法为: oFileSysObj.BuildPath (Path,Name)

VBA文件及文件夹操作

VBA文件及文件夹操作 1.VBA操作文件及文件夹 on error resume next下测试 A,在D:\下新建文件夹,命名为folder 方法1:MkDir "D:\folder" 方法2:Set abc = CreateObject("Scripting.FileSystemObject") abc.CreateFolder ("D:\folder") B,新建2个文件命名为a.xls和b.xls Workbooks.Add ActiveWorkbook.SaveAs Filename:="D:\folder\a.xls" ActiveWorkbook.SaveAs Filename:="D:\folder\b.xls" C,创建新文件夹folder1并把a.xls复制到新文件夹重新命名为c.xls MkDir "D:\folder1" FileCopy "D:\folder\a.xls", "D:\folder1\c.xls" D,复制folder中所有文件到folder1 Set qqq = CreateObject("Scripting.FileSystemObject") qqq.CopyFolder "D:\folder", "D:\folder1" D,重命名a.xls为d.xls name "d:\folder1\a.xls" as "d:\folder1\d.xls" E,判断文件及文件夹是否存在 Set yyy = CreateObject("Scripting.FileSystemObject")

If yyy.FolderExists("D:\folder1) = True Then ... If yyy.FileExists("D:\folder1\d.xls) = True Then ... F,打开folder1中所有文件 Set rrr = CreateObject("Scripting.FileSystemObject") Set r = rrr.GetFolder("d:\folder1") For Each i In r.Files Workbooks.Open Filename:=("d:\folder1\" + https://www.wendangku.net/doc/cf10753170.html, + "") Next G,删除文件c.xls kill "d:\folder1\c.xls" H,删除文件夹folder Set aaa = CreateObject("Scripting.FileSystemObject") aaa.DeleteFolder "d:\folder" 2.8excel vba一次性获取文件夹下的所有文件名的方法 小生今天上网下载了一个财务常用报表的文件包,里面有几百个excel工作表,要是手工一个一个的获得文件名的话,那我可是要忙十天半月哦。于是想到昨论坛就是vba论坛,昨不充分利用excel 自身的高级应用呀,呵呵,实现的代码如下,把工作量几天的任务可是一下子就完成了,这就是excel vba 给你工作提高效率的结果! excle vba自动获取同一文件夹下所有工作表的名称红色代码: 按Alt+F11,打开VBA编辑器,插入一个模块,把下面的代码贴进去,按F5执行 Sub t() Dim s As FileSearch '定义一个文件搜索对象

Excel VBA编程 For Each...Next

Excel VBA编程For Each...Next For Each…Next语句会重复一个语句块,而它是作用于集合中的每个对象或是数组中的每个元素。当循环执行一次则Visual Basic会自动设置一个变量。 语法: For Each element In group [statements] [Exit For] [statements] Next [element] 在该语句中,主要包含3个参数,其功能如下: ●element 必要参数。用来遍历集合或数组中所有元素的变量。对于集合来说,element可能是一 个Variant变量、一个通用对象变量或任何特殊对象变量。对于数组而言,element只能是一个 Variant变量。 ●group 必要参数。表示对象集合或数组的名称(用户定义类型的数组除外)。 ●statements 可选参数,针对group中的每一项执行的一条或多条语句。 Dim s(2) s(0) = "000000": s(1) = "1111111": s(2) = "222222222" For Each f In s MsgBox f Next 在使用For Each...Next语句过程中,应注意以下几点内容: ●如果集合中至少有一个元素,就会进入For…Each块执行。一旦进入循环,便先针对group中第 一个元素执行循环中的所有语句。如果group中还有其它的元素,则会针对它们执行循环中的语 句,当group中的所有元素都执行完了,便会退出循环,然后从Next语句之后的语句继续执行。 ●在循环中可以在任何位置放置任意个Exit For语句,随时退出循环。 ●可以将一个For…Each…Next循环放在另一个之中来组成嵌套式For…Each…Next 循环。但是每 个循环的element必须是唯一的。

Excle VBA 操作调用文件方法总结

Excel-VBA操作文件方法总结 一、利用Excel对象来处理文件 (4) 1、打开Excel文件 (4) 2、打开文本文件 (4) 3、打开其他文件 (5) 4、保存文件 (6) 5、关闭文件 (6) 6、综合实例 (7) 7、总结 (8) 二、利用VBA文件处理语句来处理文件 (8) (一)文件处理 (8) 1、Name 语句 (8) 2、FileCopy 语句 (9) 3、Kill 语句 (9) 4、GetAttr 函数 (9) 5、SetAttr 语句 (10) 6、FileLen 函数 (10) 7、FileDateTime 函数 (10) (二)目录处理 (10) 1、CurDir 函数 (10) 2、ChDir 语句 (11) 3、ChDrive 语句 (11) 4、Dir 函数 (11) 5、MkDir 语句 (13) 6、RmDir 语句 (13) (三)处理文本文件 (13) 1、Open 语句 (13) 2、Close 语句 (14) 3、Reset 语句 (14) 4、FreeFile 函数 (14) 5、EOF 函数 (15) 6、LOF 函数 (15) 7、Loc 函数 (15) 8、Input # 语句 (15) 9、Write # 语句 (16) 10、Line Input # 语句 (17) 11、Input 函数 (17)

12、Print # 语句 (18) 13、Width # 语句 (19) (四)处理二进制文件 (19) 1、Put 语句 (19) 2、Get 语句 (20) 3、Seek 语句 (20) 4、Seek 函数 (21) (五)总结 (21) 三、利用FileSystemObject对象来处理文件 (21) (一)准备工作 (22) (二)FileSystemObject对象的方法 (22) 1、GetDrive 方法 (22) 2、GetDriveName 方法 (23) 3、GetExtensionName 方法 (23) 4、GetBaseName 方法 (23) 5、GetAbsolutePathName 方法 (23) 6、GetFile 方法 (24) 7、GetFileName 方法 (24) 8、GetFolder 方法 (24) 9、GetSpecialFolder 方法 (24) 10、GetParentFolderName 方法 (25) 11、GetTempName 方法 (25) 12、BuildPath 方法 (25) 13、CreateFolder 方法 (25) 14、CopyFolder 方法 (25) 15、MoveFolder 方法 (26) 16、DeleteFolder 方法 (27) 17、FolderExists 方法 (27) 18、DriveExists 方法 (27) 19、FileExists 方法 (27) 20、CreateTextFile 方法 (27) 21、OpenTextFile 方法 (28) 22、CopyFile 方法 (28) 23、MoveFile 方法 (28) 24、DeleteFile 方法 (29) (三)处理驱动器 (29) (四)处理文件夹 (30) 1、获取文件夹的信息 (30) 2、Folder对象的方法 (30) ⑶Delete 方法 (31) ⑷CreateTextFile 方法 (31)

在VBA中对名称的基本操作

在VBA中对名称的基本操作 (1) 创建名称 ①可以使用下面的代码在当前工作簿中创建名称: https://www.wendangku.net/doc/cf10753170.html,s.Add Name:="MyName", RefersToR1C1:="=Sheet1!R2C2:R6C4"或者https://www.wendangku.net/doc/cf10753170.html,s. Add Name:="MyName", RefersTo:="=Sheet1!$B$2:$D$6" 上面的代码在当前工作簿中将工作表Sheet1内的区域B2:D6命名为MyName,该名称为全局名称。在所命名的名称中不能出现空格和单元格引用,并且,如果对命名区域使用A1样式的引用,则最后使用绝对引用,否则所命名的区域将会不确定。 在所命名的名称前加上工作表名,则创建局部名称,如: https://www.wendangku.net/doc/cf10753170.html,s.Add Name:="Sheet1!MyName1", RefersTo:="=Sheet1!$B$2:$D$6" 上面的代码在工作表Sheet1中命名区域B2:D6为MyName1,该名称为局部名称。 也通过引用指定工作表来创建局部名称,如: Worksheets("sheet2").Names.Add Name:="MyName2", RefersTo:="=Sheet2!$A$1:$B$3" 上面的代码在工作表Sheet2中创建一个局部名称MyName2,代表Sheet2中的单元格区域A1:B3。 ②一种简单的命名方法。例如: Worksheets("Sheet1").Range("B8:C10").Name = "MyName3" 上面的代码将工作表Sheet1中的单元格区域B8:C10命名为MyName3,为全局名称。 Worksheets("Sheet2").Range("H15:G16").Name = "Sheet2!MyName4" 上面的代码将工作表Sheet2中的单元格区域H15:G16命名为MyName4,为局部名称。 注意,这种方法只能应用于命名单元格区域,不能够用来命名公式、数字等。 ③在当前工作表中命名局部区域,该区域为其它工作表中的单元格区域。 Worksheets("Sheet1").Range("E6:F8").Name = "Sheet2!MyName5" 或者: Worksheets("sheet2").Names.Add Name:="MyName5", RefersTo:="=Sheet1!$E$6:$F$8" 上面的代码在工作表Sheet2中命名工作表Sheet1中单元格区域E6:F8为MyName5,该名称为Sheet2中的局部名称。

用vba遍历文件夹和子文件夹中的所有文件

在VBA遍历文件夹和子文件夹中所有文件,常用两种方法,一种是使用VBA的filesercth 对象,另外一种是使用FileSystemObject(windows文件管理工具)和递归方法。兰色对代码进行了注解,希望对大家有所帮助 第二种方法:引用FileSystemObject对象 注意:要使用FileSystemObject对象,需要首先引用一下,具体方法,VBE--工具--引用--找到miscrosoft scription runtime项目并选中 代码及注释: Dim ArrFiles(1 To 10000) '创建一个数组空间,用来存放文件名称 Dim cntFiles% '文件个数 Public Sub ListAllFiles() Dim strPath$ '声明文件路径 Dim i% 'Set fso = CreateObject("Scripting.FileSystemObject") Dim fso As New FileSystemObject, fd As Folder '创建一个FileSystemObject对象和一个文件夹对象 strPath = ThisWorkbook.Path & "\" '"设置要遍历的文件夹目录 cntFiles = 0 Set fd = fso.GetFolder(strPath) '设置fd文件夹对象 SearchFiles fd '调用子程序查搜索文件 Sheets(1).Range("A1").Resize(cntFiles) = Application.Transpose(ArrFiles) '把数组内的路径和文件名放在单元格中 End Sub Sub SearchFiles(ByVal fd As Folder) Dim fl As File Dim sfd As Folder For Each fl In fd.Files '通过循环把文件逐个放在数组内 cntFiles = cntFiles + 1 ArrFiles(cntFiles) = fl.Path Next fl If fd.SubFolders.Count = 0 Then Exit Sub 'SubFolders返回由指定文件夹中所有子文件夹(包括隐藏文件夹和系统文件夹)组成的Folders 集合 For Each sfd In fd.SubFolders '在Folders 集合进行循环查找 SearchFiles sfd '使用递归方法查找下一个文件夹 Next End Sub

EXCEL VBA工作表操作全能方法小结

EXCEL VBA工作表操作全能方法小结 [示例04-01]增加工作表(Add方法) Sub AddWorksheet() MsgBox "在当前工作簿中添加一个工作表" Worksheets.Add MsgBox "在当前工作簿中的工作表sheet2之前添加一个工作表" Worksheets.Add before:=Worksheets("sheet2") MsgBox "在当前工作簿中的工作表sheet2之后添加一个工作表" Worksheets.Add after:=Worksheets("sheet2") MsgBox "在当前工作簿中添加3个工作表" Worksheets.Add Count:=3 End Sub 示例说明:Add方法带有4个可选的参数,其中参数Before和参数After指定所增加的工作表的位置,但两个参数只能选一;参数Count用来指定增加的工作表数目。 -------------------------------------------------------------------------------- [示例04-02]复制工作表(Copy方法) Sub CopyWorksheet() MsgBox "在当前工作簿中复制工作表sheet1并将所复制的工作表放在工作表sheet2之前" Worksheets("sheet1").Copy Before:=Worksheets("sheet2") MsgBox "在当前工作簿中复制工作表sheet2并将所复制的工作表放在工作表sheet3之后" Worksheets("sheet2").Copy After:=Worksheets("sheet3") End Sub 示例说明:Copy方法带有2个可选的参数,即参数Before和参数After,在使用时两个参数只参选一。 -------------------------------------------------------------------------------- [示例04-03]移动工作表(Move方法) Sub MoveWorksheet() MsgBox "在当前工作簿中将工作表sheet3移至工作表sheet2之前" Worksheets("sheet3").Move Before:=Worksheets("sheet2") MsgBox "在当前工作簿中将工作表sheet1移至最后" Worksheets("sheet1").Move After:=Worksheets(Worksheets.Count) End Sub 示例说明:Move方法与Copy方法的参数相同,作用也一样。

VBA操作VBA代码本身

VBA操作VBA代码 dadaV20190409 '基本概念: '1、VBE对象:根对象,表示在VBA编辑器中存在的所有对象的最上层对象; '2、VBAproject对象: VBE编辑器中的工程; '3、VBComponents对象:表示工程中所有的部件集合,包括Excel对象、窗体、模块、类模块; '4、CodeModule 对象:表示部件中相关的代码; '(更具体详解请示参见Visual Basic 2010 开发参考)以下内容为程序具体内容,可直接复制至VBE运行。 '一、返回模块的行数、内容、过程名 '1.返回模块的行数 Sub 返回模块A中的总行数() MsgBox ThisWorkbook.VBProject.VBComponents("VBA操作VBA本身代码").CodeModule.CountOfLines '模块名称:"VBA操作VBA本身代码",根据自身情况修改End Sub Sub 返回过程test1中的总行数() MsgBox ThisWorkbook.VBProject.VBComponents("VBA操作VBA本身代码").CodeModule.ProcCountLines("test1", vbext_pk_Proc) 'ProcCountLines返回在过程声明之前的所有空行及注释行的计数,并且,如果该过程是一段代码模块的最后一个,那么此过程之后的所有空行也计入。 End Sub

Sub 返回过程test1中开始行数() MsgBox ThisWorkbook.VBProject.VBComponents("VBA操作VBA本身代码").CodeModule.ProcBodyLine("test1", vbext_pk_Proc) '模块名称:"VBA操作VBA本身代码",根据自身情况修改 End Sub 'vbext_pk_Get 指定一个返回属性值的过程 'vbext_pk_Let 指定一个赋值给属性的过程 'vbext_pk_Set 指定一个给对象设置引用的过程 'vbext_pk_Proc 指定所有过程除了Property 过程 '2.返回模块的内容 Sub 返回过程test1中的所有代码() Dim 开始行数, 总行数 With ThisWorkbook.VBProject.VBComponents("VBA操作VBA本身代码").CodeModule '模块名称:"VBA操作VBA本身代码",根据自身情况修改 开始行数= .ProcBodyLine("test1", vbext_pk_Proc) 总行数= .ProcCountLines("test1", vbext_pk_Proc) MsgBox .Lines(开始行数, 总行数) End With End Sub '3.返回过程名 Sub 返回第7行所在的过程名() '(程序运行错误,原因不明!) MsgBox ThisWorkbook.VBProject.VBComponents("VBA操作VBA本身代码").CodeModule.ProcOfLine(215, vbext_pk_Proc) '模块名称:"VBA操作VBA本身代码",根据自身情况修改 End Sub

Excel-VBA-操作-Word(入门篇)

Excel-VBA-操作-Word(入门篇)

本文的对象是:有一定Excel VBA基础,对Word VBA还没有什么认识,想在Excel 中通过VBA操作Word还有困难的人。 一、新建Word引用 需要首先创建一个对Word Application 对象的引用。在VBA中,工具-引用,选取“MicroSoft Word 11.0 Object Library”。 方法一、New Word.Application Dim Wordapp As Word.Application Set Wordapp = NewWord.Application Wordapp.Visible = True '可见 'Wordapp.ScreenUpdating =False '屏幕刷新 Dim WordD As Word.Document '定义word类 Set WordD = Wordapp.Documents.Add '新建文档 ‘Set WordD = Wordapp.Documents.open(filename)'打开文档…… WordD.Close '关闭文档 Set WordD = Nothing WordApp.Quit '退出Word对象 方法二、CreateObject Dim WordApp As Object Set WordApp =CreateObject("Word.Application") '新建Word对象‘后续操作及退出一样…… 方法三、GetObject 文件已打开的情况下,使用:SetWordD=GetObject(filename),可建立对文档的引用,如果文件没有打开,则还需要先用方法一或二来操作。 至于方法一和方法二的区别,在网上询问了一下,大师们的回答是: 方法一:前期绑定,好处是在对象后输入句点可以给出快速提示,因为需要先引用对象,所以容易出现版本兼容问题。 方法二:后期绑定,没有提示,根据运行代码机器上对象的版本创建对象,兼容性好。

相关文档
相关文档 最新文档