VBA 测试题

VBA 测试题
VBA 测试题

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

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 。

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

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文件及文件夹操作 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.360docs.net/doc/f04276674.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必须是唯一的。

用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

VBA遍历所有文件夹的两种方法(filesearch和FileSystemObject)

VBA遍历所有文件夹的两种方法(filesearch和FileSystemObject) 在VBA遍历文件夹和子文件夹中所有文件,常用两种方法,一种是使用VBA的filesercth对象,另外一种是使用FileSystemObject(windows文件管理工具)和递归方法。兰色对代码进行了注解,希望对大家有所帮助 第一种方法:使用filesearch对象 Sub mysearch() Dim fs, i, arr(1 To 10000) Set fs = Application.FileSearch '设置一个搜索对象 With fs .LookIn = ThisWorkbook.Path & "/" '设置搜索路径 .Filename = "*.xls" '要搜索文件名和类型 .SearchSubFolders = True '是否需要搜索子文件夹 If .Execute > 0 Then '如果找不到文件 MsgBox "There were " & .FoundFiles.Count & _ " file(s) found." '显示文件找不到 For i = 1 To .FoundFiles.Count '通过循环把所有搜索到的文件存入到数组中 arr(i) = .FoundFiles(i) Next i Sheets(1).Range("A1").Resize(.FoundFiles.Count) = Application.Transpose(arr) ' '把数组内的路径和文件名放在单元格中 Else MsgBox "There were no files found." End If End With End Sub 第二种方法:引用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数据遍历提取

Public effectarea_mark As Integer Public itemsource_position_x As Integer '源项目名称所在行 Public itemsource_position_y As Integer '源项目名称所在列 Public casesource_position_x As Integer '源工况名称所在行 Public casesource_position_y As Integer '源工况名称所在列 Public item_position_x As Integer '目标项目名称所在行 Public item_position_y As Integer '目标项目名称所在行 Public case_position_x As Integer '目标工况名称所在列 Public case_position_y As Integer '目标工况名称所在列 Public itemsource_position_x_start As Integer '源项目名称所在行起始位置Public itemsource_position_y_start As Integer '源项目名称所在列起始位置Public casesource_position_x_start As Integer '源工况名称所在行起始位置Public casesource_position_y_start As Integer '源工况名称所在列起始位置Public item_position_x_start As Integer '目标项目名称所在行起始位置Public item_position_y_start As Integer '目标项目名称所在行起始位置Public case_position_x_start As Integer '目标工况名称所在列起始位置Public case_position_y_start As Integer '目标工况名称所在列起始位置Public itemsource_position_x_max As Integer '源项目名称所在行终止位置Public itemsource_position_y_max As Integer '源项目名称所在列终止位置Public casesource_position_x_max As Integer '源工况名称所在行终止位置Public casesource_position_y_max As Integer '源工况名称所在列终止位置Public item_position_x_max As Integer '目标项目名称所在行终止位置Public item_position_y_max As Integer '目标项目名称所在行终止位置Public case_position_x_max As Integer '目标工况名称所在列终止位置

Excel VBA 工作薄工作表遍历循环

‘新建一个模块,将下面代码复制到模块中就可以实现再打开的Excel工作薄,工作表的循环 '通用模块 Sub 通用模块() Dim ABCD As Worksheet Dim BCDE As Workbook Application.ScreenUpdating = False ‘逐个工作薄循环, If MsgBox("是否在所有打开的工作薄中运行", vbInformation + vbYesNo + vbDefaultButton2, "BYD_Sensor") = vbNo Then GoTo ZCQ For Each BCDE In Workbooks BCDE.Activate For Each ABCD In Worksheets ABCD.Activate '逐个工作薄循环 '代码块 MsgBox "工作薄名称为:" & https://www.360docs.net/doc/f04276674.html, & " 工作表名称为:" & https://www.360docs.net/doc/f04276674.html, Next ABCD Next BCDE Exit Sub ZCQ: 当前工作薄循环 For Each ABCD In Worksheets ABCD.Activate '当前工作薄循环 '代码块

MsgBox "工作表名称为:" & https://www.360docs.net/doc/f04276674.html, Next ABCD Application.ScreenUpdating = True End Sub ‘下面程序实将Excel图标保存到磁盘中,默认保存到我的文档‘图表保存为图片 Sub 图表保存为图片() If ActiveChart Is Nothing Then MsgBox "请选择需要复制的图表" Else ActiveChart.Export "mychart.JPG", "JPG" End If End Sub

用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 .

VBA常用代码

1.遍历所有已打开的word文档 For Each docOpened In Documents …… Next docOpened 2.Word 将目录下所有文档转换为txt,并删除原文档 Sub 目录下doc转txt() '目录下所有word文档转为txt,并删除word文档 '保存在原目录 '遍历所有文件夹,把带路径的文件名存入字典 On Error Resume Next Dim Path As String, t 'Path为路径,t用于计算程序执行花费的时间 Set objshell = CreateObject("Shell.Application") Set objfolder = objshell.BrowseForFolder(0, "选择文件夹", 0, 0) If Not objfolder Is Nothing Then Path = objfolder.sel f.Path & "\" Set objfolder = Nothing Set objshell = Nothing '创建字典用于存储路径和文件名 Dim DicPath, DicFile, i As Integer, Ke, ContentName A s String, FileName As String, MsgTxt Set DicPath = CreateObject("Scripting.Dictionary")

Set DicFile = CreateObject("Scripting.Dictionary") DicPath.Add Path, "" i = 0 '存所有路径 Do While i < DicPath.count Ke = DicPath.keys ContentName = Dir(Ke(i), vbDirectory) Do While ContentName <> "" '若有子文件夹,则添加 '跳过当前的目录及上层目录 If ContentName <> "." And ContentName < > ".." Then If GetAttr(Ke(i) & ContentName) = vbDirectory Then DicPath.Add (Ke(i) & Conte ntName & "\"), "" End If End If ContentName = Dir Loop i = i + 1 Loop '存所有doc文件名 For Each Ke In DicPath.keys FileName = Dir(Ke & "*.doc")

VBA循环语句&判断语句

VBA循环语句 语句除了判断语句外,还有循环语句,有以下几种形式: 1、While...Wend 语句。语法: While condition [statements] Wend While...Wend 语句的语法具有以下几个部分: 部分描述 condition 必要参数。数值表达式或字符串表达式,其计算结果为True 或False。如果condition 为Null,则condition 会视为False。 statements 可选参数。一条或多条语句,当条件为True 时执行。 2、Do...Loop 语句。语法: Do [{While | Until} condition] [statements] [Exit Do] [statements] Loop 或者可以使用下面这种语法: Do [statements] [Exit Do] [statements] Loop [{While | Until} condition] Do Loop 语句的语法中的参数说明以上面相同,不重复了。 3、For...Next 语句。语法: For counter = start To end [Step step] [statements] [Exit For] [statements] Next [counter] For…Next 语句的语法具有以下几个部分: 部分描述 counter 必要参数。用做循环计数器的数值变量。这个变量不能是Boolean 或数组元素。 start 必要参数。counter 的初值。 End 必要参数,counter 的终值。 Step 可选参数。counter 的步长。如果没有指定,则step 的缺省值为1。 Statements 可选参数。放在For 和Next 之间的一条或多条语句,它们将被执行指定的次数。 4、For Each...Next 语句。语法 For Each element In group [statements] [Exit For] [statements] Next [element]

vba 常用功能20140209

一、获取工作表的行数 Dim iRows As Integer Dim iCols As Integer '获取工作表的行数 'https://www.360docs.net/doc/f04276674.html,edRange.Rows '根据Sheet1获取 iRows = https://www.360docs.net/doc/f04276674.html,edRange.Rows.Count iCols = https://www.360docs.net/doc/f04276674.html,edRange.Columns.Count '根据表格名字获取 iRows = Sheets("Sheet2").UsedRange.Rows.Count iCols = Sheets("SSRdata").UsedRange.Columns.Count 二、创建字典 字典常用方法 方法说明 Add(key,item) 增加键/条目对到Dictionary Exists(key) 如果指定的键存在,返回True,否则返回False Items() 返回一个包含Dictionary对象中所有条目的数组 Keys() 返回一个包含Dictionary对象中所有键的数组 Remove(key) 删除一个指定的键/条目对 RemoveAll() 删除全部键/条目对 '创建字典 Set dict = CreateObject("Scripting.Dictionary") ‘判断字典是否存在 If dict.Exists(sType) Then '存在则面积累加 dict(sType) = CLng(dict(sType)) + iArea Else '不存在则存入面积

dict(sType) = iArea End If '遍历字典 For Each key In dict.keys Sheet2.Cells(iCurrRow, 1) = key Sheet2.Cells(iCurrRow, 2) = dict(key) iCurrRow = iCurrRow + 1 Next '测试字典个数 Set dict = CreateObject("Scripting.Dictionary") dict("1") = "1" dict("1") = "1" dict("1") = "1" dict("1") = "2" MsgBox (dict.Count & "_______" & dict("1")) '个数都是1个结果为2 即最后一个Exit Sub 三、将表格放在数组中 ‘定义数组 Dim arr arr = https://www.360docs.net/doc/f04276674.html,edRange arr = Sheets("Sheet2").UsedRange ‘遍历数组 For i = 2 To UBound(arr) Next

EXCEL VBA 常见字典用法集锦及代码详解(全)

常见字典用法集锦及代码详解 前言 凡是上过学校的人都使用过字典,从新华字典、成语词典,到英汉字典以及各种各样数不胜数的专业字典,字典是上学必备的、经常查阅的工具书。有了它们,我们可以很方便的通过查找某个关键字,进而查到这个关键字的种种解释,非常快捷实用。 凡是上过EH论坛的想学习VBA里面字典用法的,几乎都看过研究过northwolves狼版主、oobird版主的有关字典的精华贴和经典代码。我也是从这里接触到和学习到字典的,在此,对他们表示深深的谢意,同时也对很多把字典用得出神入化的高手们致敬,从他们那里我们也学到了很多,也得到了提高。 字典对象只有4个属性和6个方法,相对其它的对象要简洁得多,而且容易理解使用方便,功能强大,运行速度非常快,效率极高。深受大家的喜爱。 本文希望通过对一些字典应用的典型实例的代码的详细解释来给初次接触字典和想要进一步了解字典用法的朋友提供一点备查的参考资料,希望大家能喜欢。 给代码注释估计是大家都怕做的,因为往往是出力不讨好的,稍不留神或者自己确实理解得不对,还会贻误他人。所以下面的这些注释如果有不对或者不妥当的地方,请大家跟帖时指正批评,及时改正。 字典的简介 字典(Dictionary)对象是微软Windows脚本语言中的一个很有用的对象。 附带提一下,有名的正则表达式(RegExp)对象和能方便处理驱动器、文件夹和文件的(FileSystemObject)对象也是微软Windows脚本语言中的一份子。 字典对象相当于一种联合数组,它是由具有唯一性的关键字(Key)和它的项(Item)联合组成。就好像一本字典书一样,是由很多生字和对它们对应的注解所组成。比如字典的“典”字的解释是这样的: “典”字就是具有唯一性的关键字,后面的解释就是它的项,和“典”字联合组成一对数据。

VBA技巧23 遍历工作表的方法

技巧1 遍历工作表的方法 在Excel应用中经常需要遍历工作簿中所有的工作表,有以下两种方法可以实现。 1-1 使用For...Next 语句 使用For...Next 语句遍历工作簿中所有的工作表,如下面的代码所示。 #001 Sub ShCount1() #002 Dim c As Integer #003 Dim i As Integer #004 Dim s As String #005 c = Worksheets.Count #006 For i = 1 To c #007 s = s & Worksheets(i).Name & Chr(13) #008 Next #009 MsgBox "工作簿中含有以下工作表:" & Chr(13) & s #010 End Sub 代码解析: ShCount1过程使用For...Next 语句遍历工作簿中所有的工作表,并用消息框显示所有的工作表名称。 第5行代码根据Worksheet对象的Count属性返回工作簿中工作表的数量赋给变量c。应用于Worksheet对象的Count属性返回Worksheets集合中工作表的数量,语法如下:expression.Count 第6行代码开始For...Next 语句循环。For...Next 语句以指定次数来重复执行一组语句,语法如下: For counter = start To end [Step step] [statements] [Exit For]

Next [counter] 参数counter是必需的,用做循环计数器的数值变量。 参数start是必需的,循环计数器的初值。 参数end是必需的,循环计数器的终值。 参数step是可选的,环计数器的步长,缺省值为1。 参数statements是可选的,放在For和Next之间的一条或多条语句,它们将被执行指定的次数。 第7行代码在For...Next循环中根据工作表的索引号取得所有工作表的名称赋给字符串变量s。 运行ShCount过程结果如图1-1所示。 图1-1 取得所有工作表名称 1-2 使用For Each...Next 语句 使用For Each...Next语句遍历工作簿中所有的工作表,如下面的代码所示。 #001 Sub ShCount2() #002 Dim Sh As Worksheet #003 Dim s As String #004 For Each Sh In Worksheets #005 s = s & https://www.360docs.net/doc/f04276674.html, & Chr(13) #006 Next #007 MsgBox "工作簿中含有以下工作表:" & Chr(13) & s #008 End Sub 代码解析: ShCount2过程使用For Each...Next语句遍历工作簿中所有的工作表,并用消息框显示所有工作表名称。 第4行代码使用For Each...Next语句遍历Worksheets集合中所有元素。For Each...Next语句针对一个数组或集合中的每个元素,重复执行一组语句,语法如下:For Each element In Group

excelvba常用代码总结1

Excel VBA常用代码总结1 改变背景色 Range("A1"). = xlNone ColorIndex一览 改变文字颜色 Range("A1"). = 1 获取单元格 Cells(1, 2) Range("H7") 获取范围 Range(Cells(2, 3), Cells(4, 5)) Range("a1:c3") '用快捷记号引用单元格Worksheets("Sheet1").[A1:B5]

选中某sheet Set NewSheet = Sheets("sheet1") 选中或激活某单元格 '“Range”对象的的Select方法可以选择一个或多个单元格,而Activate方法可以指定某一个单元格为活动单元格。 '下面的代码首先选择A1:E10区域,同时激活D4单元格: Range("a1:e10").Select Range("d4:e5").Activate '而对于下面的代码: Range("a1:e10").Select Range("f11:g15").Activate '由于区域A1:E10和F11:G15没有公共区域,将最终选择F11:G15,并激活F11单元格。 获得文档的路径和文件名 '路徑 '名稱 '路徑+名稱 '或将ActiveWorkbook换成thisworkbook 隐藏文档 = False 禁止屏幕更新 = False 禁止显示提示和警告消息 = False

文件夹做成 strPath = "C:\temp\" MkDir strPath 状态栏文字表示 = "计算中" 双击单元格内容变换 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If >= 5And <= 8) Then If = "●"Then = "" Else = "●" End If Cancel = True End If End Sub 文件夹选择框方法1 Set objShell = CreateObject("") Set objFolder = (0, "文件", 0, 0) If Not objFolder Is Nothing Then path= & "\" end if Set objFolder = Nothing Set objShell = Nothing

编写高效Excel VBA代码的最佳实践(一)

编写高效Excel VBA代码的最佳实践(一) 时间:2009-06-16 18:39:30来源:网络作者:未知点击:0次 很多Excel VBA文章和图书都介绍过如何优化VBA代码,使代码运行得更快。下面搜集了一些使Excel VBA代码运行更快的技术和技巧,基本上都是实践经验的总结。如果您还有其它优化Excel VBA代码的方法,可以在本文后留言或给出链 很多Excel VBA文章和图书都介绍过如何优化VBA代码,使代码运行得更快。下面搜集了一些使Excel VBA代码运行更快的技术和技巧,基本上都是实践经验的总结。如果您还有其它优化Excel VBA代码的方法,可以在本文后留言或给出链接,与大家分享。 对于应用程序属性,在代码运行时关闭除必需属性以外的其它所有属性 在代码运行时关闭不需要的Excel功能。其原因是,如果通过VBA更新不同的单元格区域,或者从不同的单元格区域复制/粘贴来创建汇总表,则不希望Excel浪费时间和资源来重新计算公式、显示粘贴进度或者重绘网格,尤其在每次单独的操作后(更有甚者,如果代码使用了循环,则每次单独操作后Excel都会在后台运行这些功能)。只需要在代码执行结束时进行一次重新计算和重绘就足以使工作簿更新。 下面的代码将帮助您提高代码的执行速度。 (1)放置在主代码前的一段代码,获取Excel当前的属性状态,然后将其关闭 '获得当前的Excel设置状态,将其放置在代码的开头 screenUpdateState = Application.ScreenUpdating statusBarState = Application.DisplayStatusBar calcState = Application.Calculation eventsState = Application.EnableEvents displayPageBreakState = ActiveSheet.DisplayPageBreaks '注:这是工作表级的设置 '关闭一些Excel功能使代码运行更快 Application.ScreenUpdating = False Application.DisplayStatusBar = False Application.Calculation = xlCalculationManual Application.EnableEvents = False ActiveSheet.DisplayPageBreaks = False '注:这是工作表级的设置 (2)放置在主代码结束后的一段代码,用来将Excel恢复到代码运行前的设置 '代码运行后,恢复Excel原来的状态;将下面的代码放在代码的末尾 Application.ScreenUpdating = screenUpdateState Application.DisplayStatusBar = statusBarState Application.Calculation = calcState Application.EnableEvents = eventsState ActiveSheet.DisplayPageBreaks = displayPageBreaksState '注:这是工作表级的设置

相关主题
相关文档
最新文档