EXCEL-VBA-实用代码收集

EXCEL-VBA-实用代码收集
EXCEL-VBA-实用代码收集

四、Word vba常用语句100句

1、系统参数

(01) Application.ActivePrinter …获取当前打印机

(02) Application.Height '当前应用程序文档的高度

(03) Application.Width …当前应用程序文档的宽度

(04) Application.Build …获取Word版本号和编译序号

(05) Application.Caption …当前应用程序名

(06) Application.DefaultSaveFormat '返回空字符串,表示Word文档

(07) Application.DisplayRecentFiles '返回是否显示最近使用的文档的状态

(08) Application.Documents.Count '返回当前打开的文档数

(09) Application.FontNames.Count …返回当前可用的字体数

(10) Application.Left …返回当前文档的水平位置

(11) Application.MacroContainer.FullName '返回当前文档名,包括所在路径

Application.MacroContainer.pach '返回当前文档路径

Application.ActiveDocument.Path …获得文件的相对路径

(12) Application.NormalTemplate.FullName '返回文档标准模板名称及所在位置

(13) Application.RecentFiles.Count '返回最近打开的文档数目

(14) Application.System.CountryRegion '返回应用程序所在的地区代码

(15) Application.System.FreeDiskSpace …返回应用程序所在磁盘可用空间

(16) Application.System.HorizontalResolution '返回显示器的水平分辨率

(17) Application.System.VerticalResolution '返回显示器的垂直分辨率

(18) https://www.360docs.net/doc/0a18125294.html,nguageDesignation '返回系统所使用的语言

(19) Application.System.MathCoprocessorInstalled …返回系统是否安装了数学协处理器

(20) Application.System.OperatingSystem …返回当前操作系统名

(21) Application.System.ProcessorType '返回计算机处理器名

(22) Application.System.Version …返回操作系统的版本号

(23) Application.Templates.Count '返回应用程序所使用的模板数

(24) https://www.360docs.net/doc/0a18125294.html,erName '返回应用程序用户名

(25) Application.Version …返回应用程序的版本号

2、Documents/Document对象

(26) ActiveDocument.AttachedTemplate.FullName '返回当前文档采用的模板名及模板所在位置

(27) ActiveDocument.Bookmarks.Count '返回当前文档中的书签数

(28) ActiveDocument.Characters.Count '返回当前文档的字符数

(29) ActiveDocument.CodeName …返回当前文档的代码名称

(30) https://www.360docs.net/doc/0a18125294.html,ments.Count …返回当前文档中的评论数

(31) ActiveDocument.Endnotes.Count '返回当前文档中的尾注数

(32) ActiveDocument.Fields.Count '返回当前文档中的域数目

(33) ActiveDocument.Footnotes.Count …返回当前文档中的脚注数

(34) ActiveDocument.FullName '返回当前文档的全名及所在位置

(35) ActiveDocument.HasPassword '当前文档是否有密码保护

(36) ActiveDocument.Hyperlinks.Count '返回当前文档中的链接数

(37) ActiveDocument.Indexes.Count '返回当前文档中的索引数

(38) ActiveDocument.ListParagraphs.Count '返回当前文档中项目编号或项目符号数

(39) ActiveDocument.ListTemplates.Count '返回当前文档中使用的列表模板数

(40) ActiveDocument.Paragraphs.Count '返回当前文档中的段落数

(41) ActiveDocument.Password=XXX '设置打开文件使用的密码

(42) ActiveDocument.ReadOnly '获取当前文档是否为只读属性

(43) ActiveDocument.Saved '当前文档是否被保存

(44) ActiveDocument.Sections.Count '当前文档中的节数

(45) ActiveDocument.Sentences.Count …当前文档中的语句数

(46) ActiveDocument.Shapes.Count '当前文档中的形状数,图形?

(47) ActiveDocument.Styles.Count '当前文档中的样式数

(48) ActiveDocument.Tables.Count …当前文档中的表格数

(49) ActiveDocument.TablesOfAuthorities.Count …返回当前文档中的引文目录数

(50) ActiveDocument.TablesOfAuthoritiesCategories.Count …返回当前文档中引文目录类别数

(51) ActiveDocument.Tabl esOfContents.Count …返回当前文档中的目录数

(52) ActiveDocument.TablesOfFigures.Count '返回当前文档中的图表目录数

3、Paragraphs/Paragraph对象

(53) Selection.Paragraphs.Count '返回所选区域的段落数

(54) Selection.Paragraphs.First '返回所选区域中的第一段

(55) ActiveDocument.Paragraphs(1).LeftIndent '返回当前文档中第一段的左缩进值

(56) ActiveDocument.Paragraphs(1).LineSpacing '返回当前文档中第一段的行距

(57) ActiveDocument.Paragraphs(1).OutlineLevel …返回或设置当前文档中第一段的大纲级别

.OutlineLevel = wdOutlineLevel2 …2级

.OutlineLevel = wdOutlineLevel3 …3级

(58) ActiveDocu ment.Paragraphs(1).RightIndent …返回当前文档中第一段的右缩进量

(59) ActiveDocument.Paragraphs(1).SpaceBefore '返回当前文档中第一段的段前间距

(60) ActiveDocument.Paragraphs(1).SpaceAfter …返回当前文档中第一段的段后间距

(61) ActiveDocument.Paragraphs(1).Range.Text '返回当前文档中第一段的内容

(62) ActiveDocument.Paragraphs(1)https://www.360docs.net/doc/0a18125294.html,Local '返回当前文档中第一段应用的样式名

(63) ActiveDocument.Paragraphs(1).Range.Style.Description '返回当前文档中第一段所应用样式的详细描述

(64) ActiveDocument.Paragraphs(1)https://www.360docs.net/doc/0a18125294.html, '返回当前文档中第一段所应用样式的字体名

(65) ActiveDocument.Paragraphs(1)https://www.360docs.net/doc/0a18125294.html,FarEast '返回或设置一种东亚字体名

(66) ActiveDocument.Paragraphs(1).Range.Style.Font.Size '返回或设置当前文档中第一段所应用样式的字体大小

(67) ActiveDocument.Paragraphs(1).Range.Style.Font.Spacing '返回或设置字符间距

(68) Selection.Words.Count '所选区域的字数Sentences对象

(69) Selection.Sentences.Item(1) '所选区域中的第一句的内容Words对象

(71) ActiveDocument.Words(1).Select '选择当前文档中的第一个词

(72) ActiveDocument.Range.Words(1).InsertAfter "我爱你!" '在当前文档中的第一个词后插入“我爱你”

4、Characters对象

(73) Selection.Characters.Count '当前文档中所选区域的字符数

(74) ActiveDocument.Paragraphs(1).Range.InsertParagraphAfter'在当前文档的第一段之后插入一个新段落

5、Sections/Section对象

(75) ActiveDocument.Sections.First '当前文档的第一节

(76) ActiveDocument.Sections.First.PageSetup.BottomMargin '当前文档第一节所在页的底边距

(77) ActiveDocument.Sections.First.PageSetup.LeftMargin '当前文档第一节所在页的左边距

(78) ActiveDocument.Sections.First.PageSetup.RightMargin '当前文档第一节所在页的右边距

(79) ActiveDocument.Sections.First.PageSetup.TopMargin '当前文档第一节所在页的顶边距

(80) ActiveDocument.Sections.First.PageSetup.PaperSize '返回或设置当前文档第一节所在页的大小

(81) ActiveDocument.Sections.First.PageSetup.PageHeight '返回或设置当前文档第一节所在页的高度

(82) ActiveDocument.Sections.First.PageSetup.PageWidth '返回或设置当前文档第一节所在页的宽度

(83) ActiveDocument.Sections.Add Range:=myRange '在当前文档中添加新节

(84) ActiveDocument.Sections.Item(2) '当前文档中的第二节

(85) https://www.360docs.net/doc/0a18125294.html,st.Range.InsertAfter "文档结束!" '在当前文档中最后一节的结尾添加文字“文档结束!”

6、Range对象

(86) ActiveDocument.Range(Start:=0, End:=10) '表示当前文档前10个字符所组成的一个Range对象

(87) Set myRange = ActiveDocument.Range(Start:=ActiveDocument.Paragraphs(2).Range.Start, _

End:=ActiveDocument.Paragraphs(4).Range.End) '将当前文档第2段至第4段设置为一个Range对象

(88) ActiveDocument.Paragraphs(1).Range.Copy '复制当前文档中的第一段

(89) Selection.Copy

Documents.Add.Content.Paste '复制所选内容到新文档中

(90) ActiveDocument.Bookmarks("Book1").Copy Name:="Book2" '将Book2书签复制Book1书签标记的位置

(91) Selection.GoTo What:=wdGoToLine, Which:=wdGoToAbsolute, Count:=4 '将所选内容移至文档中的第4行

(92) Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext '将所选内容移至下一个表格的第1个单元格

(93) Selection.Range.AutoFormat '为所选内容套用格式

(94) https://www.360docs.net/doc/0a18125294.html, = "Arial" '将当前文档的字体设置为斜体

(95) ActiveDocument.Content.Select Selection.Delete '将当前文档中的内容删除其它

(96) Documents.Add '添加一个新文档

(97) Set myTable = ActiveDocument.Tables.Add(Selection.Range, 2, 2) '在当前文档所选区域添加一个2行2列的表格

7、文件读写

(98) Open "C:\my.txt" For Input As #1 '打开一个用于输入的文件并令其编号为1

(99) Line Input #1, TextLine '读取被打开用于输入且编号为1的文件

(100) Close #1 '关闭编号为1的文件

一、新建Word引用

需要首先创建一个对Word Application 对象的引用。在VBA中,工具-引用,选取“Micro Soft 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),可建立对文档的引用,如果文件没有打开,则还需要先用方法一或二来操作。

至于方法一和方法二的区别,在网上询问了一下,大师们的回答是:

方法一:前期绑定,好处是在对象后输入句点可以给出快速提示,因为需要先引用对象,所以容易出现版本兼容问题。

方法二:后期绑定,没有提示,根据运行代码机器上对象的版本创建对象,兼容性好。

提示:有时二者有较大区别,可论坛搜索字典对象,建议编写代码时使用前期绑定,发布时使用后期绑定。

二、认识Word的结构

Excel有:

Excel.Application ?Excel引用

Excel.Application. Workbooks ?工作簿

Excel.Application. Workbooks.Sheets(1)?工作表

工作表下是Range,区域;Cells(row,col),单元格

Word有:

Word.Application

Word.Application.Documents ?文档

文档下有字符、单词、句子、段落和节。字符组成单词,单词组成句子,句子组成段落。此外,每个文档具有一个包含一个或多个节的Sections 集合,每一个节都有一个包含该节页眉和页脚的HeadersFooters 集合。

Characters(index)

Words(index)

Sentences(index)

Paragraphs(index)

Sections(index)

前三个返回Range对象,能直接使用任何区域属性或方法修改该Range 对象。后面二个返回该集合的单个成员,而不是Range 对象,不能直接使用区域属性或方法。如下使用例子:Words(1)后面直接.Copy,而.Paragraphs(1)和.Copy之间多了一个Range。

Selection.Words(1).Copy

ActiveDocument.Paragraphs(1).Range.Copy

Characters:字符,ActiveDocument.Sentences(1).Characters.Count,第一句的字符总数。Words:单词,对于英文来说是二个空格之间的字母加空格,对于中文,一个标点符号,一个汉字,或一个词(按照微软的输入法中的词组定义?)。(感觉不是很可靠?)

Sentences:句子,以句号结束?感觉也不是一个很可靠的范围,感觉还是字符、段落、节,控制起来靠谱一些。

Range 对象表示文档中的一个连续范围,由一个起始字符位置和一个终止字符位置定义。这个连续范围可以小到一个插入点,大到整个文档。

Dim rngPa As Range

Set rngPa =ActiveDocument. Characters (1) …第一个字符

Set rngPa = ActiveDocument.Range( _

Start:=ActiveDocument.Paragraphs(1).Range.Start, _

End:=ActiveDocument.Paragraphs(4).Range.End) …第1段头到第4段尾

Set rngPa = ActiveDocument.Range(Start:=0,End:=10) …当前文档前10个字符

rngPa.Select

选定,我觉得用处不大,原因就是为什么要选中呢?能操作就直接操作,不能的话,就选中吧(他可以说是没办法的办法)。

range对象的赋值:(包括任意的对象,Set是对对象赋值的标准语句)

set a=b

和变量的赋值:a=1不一样

三、通过录制宏生成代码

有了对Word基本结构的认识,想操作这些对象应该使用什么方法、修改哪些属性?不知道就“录制宏”。录制宏是我们认识未知对象的很好方法之一,通过宏录制器将操作译成Word的Visual Basic 代码,再根据需要修改代码。Word中录制与Excel不同的是,不能使用鼠标移动光标或

选中一行,只能使用键盘来移动,或用Shift+方向键来选中。以下几句话就是键盘的:上、下、左、右、Home、End、Shift+左选中5个字符、Shift+右选中5个字符。

Selection.MoveUp Unit:=wdLine, Count:=1

Selection.MoveDown Unit:=wdLine, Count:=1

Selection.MoveLeft Unit:=wdCharacter, Count:=1

Selection.MoveRight Unit:=wdCharacter, Count:=1

Selection.HomeKey Unit:=wdLine

Selection.EndKey Unit:=wdLine

Selection.MoveLeft Unit:=wdCharacter, Count:=5, Extend:=wdExtend

Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend

录制的宏使用Selection 属性返回Selection 对象。即:录制的宏总是以Selection.开头的,如上。要想使用这个Selection.,有时候我们就不得不先对特定的对象.Select,选中。

当然,Selection是一个Range,Characters、Words、Sentences也是Range,Paragraphs(n). Range, Sections(2). Range也是Range,那我们就可以将Selection.后面的语句嫁接到前面这些Range 之后,就不用先.Select了。

录制的宏,通过嫁接或者复制到EXCEL VBA之后,有的运行会出错,此时应检查以下几项:

1、第一项中要求的“引用”建立了没?

2、利用VBA提醒功能检查语句。VBA编辑过程中,通常在打下. 之后(需要前期绑定?),该对象所有的方法、属性都会显示出来,利用这个特点,可以检查录制的宏,能否嫁接到需要操作的对象之后。提示里有就能,没有就不能。

3、部分转换函数,Word VBA里有,Excel VBA里可能没有,遇到这样的情况,也可能出错。例:

WordD.Paragraphs(1).Range.ParagraphFormat.FirstLineIndent = CentimetersToPoints(0.35) Selection.ParagraphFormat.FirstLineIndent = CentimetersToPoints(0.35)是“首行缩进2字符”操作录制的,嫁接后,运行出错,按方法2检查:.ParagraphFormat.FirstLineIndent能用在Range 之后,那么就是CentimetersToPoints(0.35)出问题了?这显然是一个函数,字面意思是“厘米转换成点数”,(录制时我明明输入的是“2字符”,录下来咋成了厘米为单位呢?)那是否是Excel VBA 里没有这个函数呢?(我不知道),将=后面直接改为数字运行通过,最后试下来=20大约相当于5号字的“首行缩进2字符”。(这个20,就是20Points?0.35cm=20 Points?)

(有人可能会说这样的办法太笨,有什么好办法请告知。先谢过!)

四、Word vba常用语句100句

1、系统参数

(01) Application.ActivePrinter …获取当前打印机

(02) Application.Height '当前应用程序文档的高度

(03) Application.Width …当前应用程序文档的宽度

(04) Application.Build …获取Word版本号和编译序号

(05) Application.Caption …当前应用程序名

(06) Application.DefaultSaveFormat '返回空字符串,表示Word文档

(07) Application.DisplayRecentFiles '返回是否显示最近使用的文档的状态

(08) Application.Documents.Count '返回当前打开的文档数

(09) Application.FontNames.Count …返回当前可用的字体数

(10) Application.Left …返回当前文档的水平位置

(11) Application.MacroContainer.FullName '返回当前文档名,包括所在路径

Application.MacroContainer.pach '返回当前文档路径

Application.ActiveDocument.Path …获得文件的相对路径

(12) Application.NormalTemplate.FullName '返回文档标准模板名称及所在位置

(13) Application.RecentFiles.Count '返回最近打开的文档数目

(14) Application.System.CountryRegion '返回应用程序所在的地区代码

(15) Application.System.FreeDiskSpace …返回应用程序所在磁盘可用空间

(16) Application.System.HorizontalResolution '返回显示器的水平分辨率

(17) Application.System.VerticalResolution '返回显示器的垂直分辨率

(18) https://www.360docs.net/doc/0a18125294.html,nguageDesignation '返回系统所使用的语言

(19) Application.System.MathCoprocessorInstalled …返回系统是否安装了数学协处理器

(20) Application.System.OperatingSystem …返回当前操作系统名

(21) Application.System.ProcessorType '返回计算机处理器名

(22) Application.System.Version …返回操作系统的版本号

(23) Application.Templates.Count '返回应用程序所使用的模板数

(24) https://www.360docs.net/doc/0a18125294.html,erName '返回应用程序用户名

(25) Application.Version …返回应用程序的版本号

2、Documents/Document对象

(26) ActiveDocument.AttachedTemplate.FullName '返回当前文档采用的模板名及模板所在位置

(27) ActiveDocument.Bookmarks.Count '返回当前文档中的书签数

(28) ActiveDocument.Characters.Count '返回当前文档的字符数

(29) ActiveDocument.CodeName …返回当前文档的代码名称

(30) https://www.360docs.net/doc/0a18125294.html,ments.Count …返回当前文档中的评论数

(31) ActiveDocument.Endnotes.Count '返回当前文档中的尾注数

(32) ActiveDocument.Fields.Count '返回当前文档中的域数目

(33) ActiveDocument.F ootnotes.Count …返回当前文档中的脚注数

(34) ActiveDocument.FullName '返回当前文档的全名及所在位置

(35) ActiveDocument.HasPassword '当前文档是否有密码保护

(36) ActiveDocument.Hyperlinks.Count '返回当前文档中的链接数

(37) ActiveDocument.Indexes.Count '返回当前文档中的索引数

(38) ActiveDocument.ListParagraphs.Count '返回当前文档中项目编号或项目符号数

(39) ActiveDocument.ListTemplates.Count '返回当前文档中使用的列表模板数

(40) ActiveDocument.Paragraphs.Count '返回当前文档中的段落数

(41) ActiveDocument.Password=XXX '设置打开文件使用的密码

(42) ActiveDocument.ReadOnly '获取当前文档是否为只读属性

(43) ActiveDocument.Saved '当前文档是否被保存

(44) ActiveDocument.Sections.Count '当前文档中的节数

(45) ActiveDocument.Sentences.Count …当前文档中的语句数

(46) ActiveDocument.Shapes.Count '当前文档中的形状数,图形?

(47) ActiveDocument.Styles.Count '当前文档中的样式数

(48) ActiveDocument.Tables.Count …当前文档中的表格数

(49) ActiveDocument.TablesOfAuthorities.Count …返回当前文档中的引文目录数

(50) ActiveDocument.TablesOfAuthoritiesCategories.Count …返回当前文档中引文目录类别数

(51) ActiveDocument.TablesOfContents.Count …返回当前文档中的目录数

(52) ActiveDocument.TablesOfFigures.Count '返回当前文档中的图表目录数

3、Paragraphs/Paragraph对象

(53) Selection.Paragraphs.Count '返回所选区域的段落数

(54) Selection.Paragraphs.First '返回所选区域中的第一段

(55) ActiveDocument.Paragraphs(1).LeftIndent '返回当前文档中第一段的左缩进值

(56) ActiveDocument.Paragraphs(1).LineSpacing '返回当前文档中第一段的行距

(57) ActiveDocument.Paragraphs(1).OutlineLevel …返回或设置当前文档中第一段的大纲级别

.OutlineLevel = wdOutlineLevel2 …2级

.OutlineLevel = wdOutlineLevel3 …3级

(58) ActiveDocument.Paragraphs(1).RightIndent …返回当前文档中第一段的右缩进量

(59) ActiveDocument.Paragraphs(1).SpaceBefore '返回当前文档中第一段的段前间距

(60) ActiveDocument.Paragraphs(1).SpaceAfter …返回当前文档中第一段的段后间距

(61) ActiveDocument.Paragraphs(1).Range.Text '返回当前文档中第一段的内容

(62) ActiveDocument.Paragraphs(1)https://www.360docs.net/doc/0a18125294.html,Local '返回当前文档中第一段应用的样式名

(63) ActiveDocument.Paragraphs(1).Range.Style.Description '返回当前文档中第一段所应用样式的详细描述

(64) ActiveDocument.Paragraphs(1)https://www.360docs.net/doc/0a18125294.html, '返回当前文档中第一段所应用样式的字体名

(65) ActiveDocument.Paragraphs(1)https://www.360docs.net/doc/0a18125294.html,FarEast '返回或设置一种东亚字体名

(66) ActiveDocument.Paragraphs(1).Range.Style.Font.Size '返回或设置当前文档中第一段所应用样式的字体大小

(67) ActiveDocument.Paragraphs(1).Range.Style.Font.Spacing '返回或设置字符间距

(68) Selection.Words.Count '所选区域的字数Sentences对象

(69) Selection.Sentences.Item(1) '所选区域中的第一句的内容Words对象

(71) ActiveDocument.Words(1).Select '选择当前文档中的第一个词

(72) ActiveDocument.Range.Words(1).InsertAfter "我爱你!" '在当前文档中的第一个词后插入“我爱你”

4、Characters对象

(73) Selection.Characters.Count '当前文档中所选区域的字符数

(74) ActiveDocument.Paragraphs(1).Range.InsertParagraphAfter'在当前文档的第一段之后插入一个新段落

5、Sections/Section对象

(75) ActiveDocument.Sections.First '当前文档的第一节

(76) ActiveDocument.Sections.First.PageSetup.BottomMargin '当前文档第一节所在页的底边距

(77) ActiveDocument.Sections.First.PageSetup.LeftMargin '当前文档第一节所在页的左边距

(78) ActiveDocument.Sections.First.PageSetup.RightMargin '当前文档第一节所在页的右边距

(79) ActiveDocument.Sections.First.PageSetup.TopMargin '当前文档第一节所在页的顶边距

(80) ActiveDocument.Sections.First.PageSetup.PaperSize '返回或设置当前文档第一节所在页的大小

(81) ActiveDocument.Sections.First.PageSetup.PageHeight '返回或设置当前文档第一节所在页的高度

(82) ActiveDocument.Sections.First.PageSetup.PageWidth '返回或设置当前文档第一节所在页的宽度

(83) ActiveDocument.Sections.Add Range:=myRange '在当前文档中添加新节

(84) ActiveDocument.Sections.Item(2) '当前文档中的第二节

(85) https://www.360docs.net/doc/0a18125294.html,st.Range.InsertAfter "文档结束!" '在当前文档中最后一节的结尾添加文字“文档结束!”

6、Range对象

(86) ActiveDocument.Range(Start:=0, End:=10) '表示当前文档前10个字符所组成的一个Range对象

(87) Set myRange = ActiveDocument.Range(Start:=ActiveDocument.Paragraphs(2).Range.Start, _

End:=ActiveDocument.Paragraphs(4).Range.End) '将当前文档第2段至第4段设置为一个Range对象

(88) ActiveDocument.Paragraphs(1).Range.Copy '复制当前文档中的第一段

(89) Selection.Copy

Documents.Add.Content.Paste '复制所选内容到新文档中

(90) ActiveDocument.Bookmarks("Book1").Copy Name:="Book2" '将Book2书签复制Book1书签标记的位置

(91) Selection.GoTo What:=wdGoToLine, Which:=wdGoToAbsolute, Count:=4 '将所选内容移至文档中的第4行

(92) Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext '将所选内容移至下一个表格的第1个单元格

(93) Selection.Range.AutoFormat '为所选内容套用格式

(94) https://www.360docs.net/doc/0a18125294.html, = "Arial" '将当前文档的字体设置为斜体

(95) ActiveDocument.Content.Select Selection.Delete '将当前文档中的内容删除其它

(96) Documents.Add '添加一个新文档

(97) Set myTable = ActiveDocument.Tables.Add(Selection.Range, 2, 2) '在当前文档所选区域添加一个2行2列的表格

7、文件读写

(98) Open "C:\my.txt" For Input As #1 '打开一个用于输入的文件并令其编号为1

(99) Line Input #1, TextLine '读取被打开用于输入且编号为1的文件

(100) Close #1 '关闭编号为1的文件

五、例子。例中的操作全部是录制,然后嫁接的。

例子:用Excel VBA,将如下Excel表格(考试系统中导出的题库),生成如下Word文档

规程名称题型题目内容答案 A 答案 B 答案 C 答案D 正确答案分值有否图形

规程 1 选择题题目1………………………… ABCD 2

规程1 判断题题目2……对 2

规程 2 选择题题目3………………………… A 2

规程2 判断题题目4……错 2

规程1

一、选择题

1、题目1……(ABCD)

A、……

B、……

C、……

D、……

二、判断题

1、题目2……(对)

规程2

一、选择题

1、题目3……(A)

A、……

B、……

C、……

D、……

二、判断题

1、题目4……(错)

Sub ScWordWd()

'将“题库”中的题目,按格式生成Word文档

Dim I As Integer, J As Integer, Zhs As Integer, Xh As Integer, Dls As String Dim Lr As String, Bt As String, Bt1 As String, Tx As String, Tx1 As String Dim Lj As String, Wjm As String

Dim AA

Sheets("题库").Select

Zhs = Sheets("题库").UsedRange.Rows.Count

Bt = Cells(2, 1) '标题

Tx = Cells(2, 2) '题型

Xh = 1 '

Dls = 1 '

'Dim WordApp As Object

'Set WordApp = CreateObject("Word.Application") '新建Word对象

Dim Wordapp As Word.Application

Set Wordapp = New Word.Application '新建Word对象

Wordapp.Visible = True '可见

'Wordapp.ScreenUpdating = False '屏幕刷新

Dim WordD As Word.Document '定义word类

Set WordD = Wordapp.Documents.Add '新建文档

Wordapp.Selection.WholeStory '全选

https://www.360docs.net/doc/0a18125294.html, = "宋体" '字体

Wordapp.Selection.Font.Size = 10 '字号

For I = 2 To Zhs

Bt1 = Cells(I, 1)

WordD.Paragraphs(Dls)https://www.360docs.net/doc/0a18125294.html, = "宋体" '字体

WordD.Paragraphs(Dls).Range.Font.Size = 10 '字号

If Len(Trim(Bt1)) > 0 Then

Tx1 = Cells(I, 2)

Lr = Cells(I, 3)

If Bt1 <> Bt Then '标题不同,写标题,居中

If I > 5 Then '

WordD.Paragraphs(Dls).Range.InsertAfter (vbCrLf) '插入回车符,增加一段

Dls = Dls + 1

WordD.Paragraphs(Dls).Range.Select

'Wordapp.Selection.InsertBreak Type:=wdPageBreak

'WordD.Paragraphs(Dls).Range.InsertBreak Type:=wdPageBreak '插入分页符,两个都没反应?

Wordapp.Selection.InsertBreak Type:=wdSectionBreakNextPage '插入分节符(下一页)

WordD.Paragraphs(Dls).Range.InsertAfter (vbCrLf) '插入回车符,增加一段

Dls = Dls + 1

End If

Bt = Bt1

WordD.Paragraphs(Dls).Range.Text = Bt & vbCrLf '写标题

'WordD.Paragraphs(Dls).Range.InsertAfter (vbCrLf) '插入回车符,增加一段

WordD.Paragraphs(Dls).OutlineLevel = wdOutlineLevel2 '设置大纲级别,2级

'WordD.Paragraphs(Dls).Range.ParagraphFormat.FirstLineIndent = CentimetersToPoints(0)

WordD.Paragraphs(Dls).Range.ParagraphFormat.FirstLineIndent = 0 '取消首行缩进

'WordD.Paragraphs(Dls)https://www.360docs.net/doc/0a18125294.html, = "宋体" '字体

'WordD.Paragraphs(Dls).Range.Font.Size = 10 '字号

WordD.Paragraphs(Dls).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter '居中排列

WordD.Paragraphs(Dls).Range.Font.Bold = wdToggle '加粗

Dls = Dls + 1

Xh = 1

End If

If Tx1 <> Tx Then '题型不同,写题型

If Tx1 = "选择题" Then

WordD.Paragraphs(Dls).Range.Text = "一、选择题" '写题型

Else

WordD.Paragraphs(Dls).Range.InsertAfter (vbCrLf) '插入回车符,增加一段

Dls = Dls + 1

WordD.Paragraphs(Dls).Range.Text = "二、判断题" '写题型

End If

Tx = Tx1

WordD.Paragraphs(Dls).Range.ParagraphFormat.Alignment = wdAlignParagraphJustify '左对齐

'WordD.Paragraphs(Dls).Range.ParagraphFormat.FirstLineIndent = CentimetersToPoints(0.35) '首行缩进2字符,时能用时不能用,CentimetersToPoints不能被Excel识别?

WordD.Paragraphs(Dls).Range.ParagraphFormat.FirstLineIndent = 20 '首行缩进,20大约相当于5号字的2字符

WordD.Paragraphs(Dls).Range.InsertAfter (vbCrLf) '插入回车符,增加一段

WordD.Paragraphs(Dls).Range.Font.Bold = wdToggle '加粗

Dls = Dls + 1

Xh = 1

End If

If Tx = "选择题" Then

WordD.Paragraphs(Dls).Range.Text = Xh & "、" & Lr & " (" & Cells(I, 8) & ")" & vbCrLf '写题目及标准答案

Dls = Dls + 1

WordD.Paragraphs(Dls).Range.Text = "A、" & Cells(I, 4) & vbCrLf '选项A

Dls = Dls + 1

WordD.Paragraphs(Dls).Range.Text = "B、" & Cells(I, 5) & vbCrLf '选项B

Dls = Dls + 1

WordD.Paragraphs(Dls).Range.Text = "C、" & Cells(I, 6) & vbCrLf '选项C

Dls = Dls + 1

If Len(Trim(Cells(I, 7))) > 0 Then

WordD.Paragraphs(Dls).Range.Text = "D、" & Cells(I, 7) & vbCrLf '选项D

Dls = Dls + 1

End If

Xh = Xh + 1

Else

WordD.Paragraphs(Dls).Range.Text = Xh & "、" & Lr & " (" & Cells(I, 8) & ")" & vbCrLf '写题目及标准答案

Dls = Dls + 1

Xh = Xh + 1

End If

End If

Next I

Wordapp.WindowState = wdWindowStateMinimize '最小化窗口

'Wordapp.ScreenUpdating = True '屏幕刷新

'WordD.Close '

'Set WordD = Nothing

'Set Wordapp = Nothing

'Wordapp.Quit '退出Word对象

ThisWorkbook.Activate

End Sub

图片切换

Sub 显示开或关()

If ActiveSheet.Shapes("Picture 2").Visible = True Then

ActiveSheet.Shapes("Picture 1").Visible = True

ActiveSheet.Shapes("Picture 2").Visible = False

Else

ActiveSheet.Shapes("Picture 2").Visible = True

ActiveSheet.Shapes("Picture 1").Visible = False

End If

End Sub

当前单元格输入数字自动分解

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column > 1 Then Exit Sub

If Len(Target(1, 1)) > 1 Then

Dim oJs As Object

Set oJs = CreateObject("ScriptControl"): https://www.360docs.net/doc/0a18125294.html,nguage = "JScript"

Target(1, 2).Resize(1, 254).ClearContents

Target.Resize(1, Len(Target)) = Split(oJs.eval("'" & Target & "'.match(/./g);"), ",") End If

End Sub

word批量修改图片大小——固定长宽

Sub setpicsize() '设置图片大小

Dim n'图片个数

On Error Resume Next '忽略错误

For n = 1 To ActiveDocument.InlineShapes.Count 'InlineShapes类型图片ActiveDocument.InlineShapes(n).Height = 400 '设置图片高度为400px ActiveDocument.InlineShapes(n).Width = 300 '设置图片宽度300px

Next n

For n = 1 To ActiveDocument.Shapes.Count 'Shapes类型图片

ActiveDocument.Shapes(n).Height = 400 '设置图片高度为400px

ActiveDocument.Shapes(n).Width = 300 '设置图片宽度300px

Next n

End Sub

批量修改图片大小——按比例缩放篇

Sub setpicsize() '设置图片大小

Dim n'图片个数

Dim picwidth

Dim picheight

On Error Resume Next '忽略错误

For n = 1 To ActiveDocument.InlineShapes.Count 'InlineShapes类型图片picheight = ActiveDocument.InlineShapes(n).Height

picwidth = ActiveDocument.InlineShapes(n).Width

ActiveDocument.InlineShapes(n).Height = picheight * 1.1 '设置高度为1.1倍ActiveDocument.InlineShapes(n).Width = picwidth * 1.1 '设置宽度为1.1倍Next n

For n = 1 To

ActiveDocument.Shapes.Count 'Shapes类型图片

picheight = ActiveDocument.Shapes(n).Height

picwidth = ActiveDocument.Shapes(n).Width

ActiveDocument.Shapes(n).Height = picheight * 1.1 '设置高度为1.1倍ActiveDocument.Shapes(n).Width = picwidth * 1.1 '设置宽度为1.1倍

Next n

End Sub

批量给图片加边框

Dim i As Integer

For i = 1 To ActiveDocument.InlineShapes.Count

With ActiveDocument.InlineShapes(i)

With .Borders(wdBorderLeft)

.LineStyle = wdLineStyleSingle

.LineWidth = wdLineWidth100pt

.Color = wdColorAutomatic

End With

With .Borders(wdBorderRight)

.LineStyle = wdLineStyleSingle

.LineWidth = wdLineWidth100pt

.Color = wdColorAutomatic

End With

With .Borders(wdBorderTop)

.LineStyle = wdLineStyleSingle

.LineWidth = wdLineWidth100pt

.Color = wdColorAutomatic

End With

With .Borders(wdBorderBottom)

.LineStyle = wdLineStyleSingle

.LineWidth = wdLineWidth100pt

.Color = wdColorAutomatic

End With

.Borders.Shadow = False

End With

With Options

.DefaultBorderLineStyle = wdLineStyleSingle

.DefaultBorderLineWidth = wdLineWidth100pt

.DefaultBorderColor = wdColorAutomatic

End With

Next i

锁定文件名

Private Sub Workbook_Open()

If https://www.360docs.net/doc/0a18125294.html, <> "三八节.xls" Then

Application.DisplayAlerts = False

Application.Quit

End If

End Sub

将数值转换为文本

[程序扩展] 可以将程序代码1和程序代码2略加改动,将一个字符附加到所选单元格的开头。如将cell.Value = "'" & cell.Value换成cell.Value=”I”&cell.Value,则在所选单元格开头添加字符“I”,即可统一单元格开始形式。

[程序代码1]

Sub 数值转换为文本1() '通过添加'号

Dim cell As Range

For Each cell In Selection

If Not cell.HasFormula Then

If Not IsEmpty(cell) Then

cell.Value = "'" & cell.Value

End If

End If

Next

End Sub

[程序代码2]

Sub 数值转换成文本2() '只对数字单元格进行操作

Dim cell As Range

For Each cell In Selection

If Not cell.HasFormula Then

If Not IsEmpty(cell) Then

If IsNumeric(cell) Then

cell.Value = "'" & cell.Value '可根据需要变换字符

End If

End If

End If

Next

End Sub

[程序代码3]

Sub 数值转换为文本3() '通过格式

Dim cell As Range

For Each cell In Selection

If Not cell.HasFormula Then

If Not IsEmpty(cell) Then

Selection.NumberFormatLocal = "@"

End If

End If

Next

End Sub

关闭并保存所有工作簿

Option Explicit

Sub CloseAllWorkbooks()

Dim Book As Workbook

For Each Book In Workbooks

If https://www.360docs.net/doc/0a18125294.html,<>https://www.360docs.net/doc/0a18125294.html, Then

Book.Close savechanges:=True

End If

Next Book

ThisWorkbook.Close savechanges:=True

End Sub

关闭工作簿并将它彻底删除

Option Explicit

Sub KillMe()

With ThisWorkbook

.Saved = True

.ChangeFileAccess

Mode:=xlReadOnly

Kill .FullName .Close False

End With

End Sub

A列输出排列组合

Sub pailie()

Dim s As String, x() As String

Dim starttime As Single, endtime As Single

Dim i As Long, j As Integer, k As Integer, Num As Long, n As Integer Dim ALL(), TEMP1 As Long, TEMP2 As Long, arr() As String

s = InputBox("请输入不重复的字母或数字")

n = Len(s) '元素个数

ReDim x(n - 1)

For i = 1 To n

x(i - 1) = Mid(s, i, 1)

Next

starttime = Timer '开始计时

Num = 1

For i = 1 To n

Num = Num * i '递归计算n!

Next

ReDim arr(1 To Num, 1 To 1)

For i = 1 To Num

ReDim ALL(1 To n) '初始化数组all

ALL(1) = x(0)

TEMP1 = i

For j = 2 To n

TEMP2 = TEMP1 Mod j

TEMP1 = TEMP1 \ j

If TEMP2 = 0 Then

ALL(j) = x(j - 1) 'temp2为0则放在最后

Else

For k = j To TEMP2 + 1 Step -1

ALL(k) = ALL(k - 1) ' temp2之后的元素后移一位

Next

ALL(TEMP2) = x(j - 1) 'temp2不为0 则置于第temp2个元素前

End If

Next

arr(i, 1) = Join(ALL, "") '输出

Next

endtime = Timer

Application.ScreenUpdating = False

Range("a1").Resize(Num, 1) = arr

Application.ScreenUpdating = True

MsgBox "共" & Num & " 种排列!用时" & endtime - starttime & " 秒!"

End Sub

同薄汇总工作表

Sub mysub()

Application.ScreenUpdating = False

Dim sh As Worksheet, aa As Long, bb As Long, cc As Long, dd As Long

dd = Sheets("汇总").[IV1].End(1).Column

Sheets("汇总").Range(Cells(2, 2), Cells(65536, dd)).ClearContents

For Each sh In Worksheets

If https://www.360docs.net/doc/0a18125294.html, <> "汇总" Then

bb = Sheets("汇总").[b65536].End(xlUp).Row + 1

aa = sh.[b65536].End(xlUp).Row

cc = sh.[IV1].End(1).Column

sh.Range(sh.Cells(2, 2), sh.Cells(aa, cc)).Copy

Sheets("汇总").Cells(bb, 2).PasteSpecial xlPasteValues

End If

Next sh

Application.ScreenUpdating = True

End Sub

异薄SHEET1汇总

Private Sub CommandButton2_Click()

Application.ScreenUpdating = False

Dim i&, LastRow&, Path$, FileName$, TWB$, WB As Workbook

Path = ThisWorkbook.Path & "\"

FileName = Dir(Path & "*.xls")

TWB = https://www.360docs.net/doc/0a18125294.html,

Range("A1:X65536").ClearContents

Do While Len(FileName)

If FileName <> TWB Then

Set WB = Workbooks.Open(Path & FileName)

With WB.Worksheets(1)

LastRow = .Range("A65536").End(xlUp).Row

If LastRow > 1 Then

.Range("A8:x8").Copy

ThisWorkbook.Sheets("汇总").Range("A65536").End(xlUp)(2).PasteSpecial

Paste:=xlValue

End If

End With

Application.CutCopyMode = False

WB.Close True

End If

FileName = Dir()

Loop

Range("A1").Select

Set WB = Nothing

Application.ScreenUpdating = True

End Sub

异薄汇总工作表

Private Sub CommandButton2_Click()

Application.ScreenUpdating = False

Dim i&, LastRow&, Path$, FileName$, TWB$, WS As Worksheet, WB As Workbook

Path = ThisWorkbook.Path & "\"

FileName = Dir(Path & "*.xls")

TWB = https://www.360docs.net/doc/0a18125294.html,

Range("A1:X65536").ClearContents

Do While Len(FileName)

If FileName <> TWB Then

Set WB = Workbooks.Open(Path & FileName)

For Each WS In WB.Worksheets

LastRow = WS.Range("A65536").End(xlUp).Row

If LastRow > 1 Then

WS.Range("A8:x" & LastRow).Copy '复制A8:X列&最后有数据的列

ThisWorkbook.Sheets("汇总").Range("A65536").End(xlUp)(2).PasteSpecial Paste:=xlValue '粘贴到“汇总”表,从下往上数有数据的列的下一列

End If

Next

Application.CutCopyMode = False

WB.Close True

End If

FileName = Dir()

Loop

Range("A1").Select

Set WB = Nothing

Application.ScreenUpdating = True

End Sub

调用实例

Application.Dialogs(1).Show是调用打开对话框

Application.Dialogs(5或145).Show是调用另存为对话框,

Application.Dialogs(6).Show是删除文档

Application.Dialogs(7).Show是页面设置

Application.Dialogs(8).Show是打印对话框

Application.Dialogs(9).Show是选择打印机对话框

Application.Dialogs(12).Show是重排窗口设置对话框

Application.Dialogs(17).Show宏对话框

Application.Dialogs(23).Show设置打印标题

Application.Dialogs(26).Show字体设置对话框

Application.Dialogs(27).Show显示选项

Application.Dialogs(28).Show保护工作表

Application.Dialogs(32).Show重算选项

Application.Dialogs(39或192).Show排序

Application.Dialogs(40).Show序列选项

Application.Dialogs(41).Show模拟运算表

Application.Dialogs(42或111).Show单元格格式,选择单元格内容的格式

Application.Dialogs(43).Show选择单元格字体的排列格式,横排或竖排等

Application.Dialogs(44或134或190).Show字体选择

Application.Dialogs(45).Show边框格式设置

Application.Dialogs(46).Show对单元格的保护或隐藏选项

Application.Dialogs(47).Show列宽设置选项

Application.Dialogs(52).Show清除对话框

Application.Dialogs(53).Show选择性粘贴对话框

Application.Dialogs(54).Show删除对话框

Application.Dialogs(55).Show插入对话框

Application.Dialogs(61或110).Show定义名称对话框

Application.Dialogs(62).Show指定名称

Application.Dialogs(63或132).Show定位

Application.Dialogs(64).Show查找

Application.Dialogs(84).Show设置单元格颜色和图案

Application.Dialogs(91).Show分列

Application.Dialogs(94).Show取消或隐藏工作表选择对话框

Application.Dialogs(95).Show工作区视图等选项

Application.Dialogs(103).Show选择要激活哪个工作表对话框

Application.Dialogs(108).Show复制图片选项

Application.Dialogs(119).Show新建对话框

Application.Dialogs(127).Show设置行高

Application.Dialogs(130).Show替换对话框

Application.Dialogs(137).Show拆分当前窗口

Application.Dialogs(161).Show设置图表颜色

Application.Dialogs(170或171).Show移动当前窗口

Application.Dialogs(191).Show合并计算对话框

Application.Dialogs(198).Show单变量求解

Application.Dialogs(199).Show选定成组工作表

Application.Dialogs(200).Show填充成组工作表

选项按钮输入单元格

Private Sub CommandButton1_Click()

For Each sp In Me.Frame1.Controls '在窗体(me)中的Frame1内的所有控件进行遍历

If sp Then Sheet1.[a3] = sp.Caption '如果某个被选中,则将该选项按钮的Caption写入工作表Sheet1的a3单元格

Next

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) '1. 直接关闭窗体应是不用保存的了(或给个提示,是否要保存)

If MsgBox("是否保存选项", vbYesNo) = vbOK Then

For Each sp In Me.Frame1.Controls

CommandButton1_Click

Next

End If

End Sub

获取屏幕分辨率

Sub fenbianlv()

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _

& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colSettings = objWMIService.ExecQuery _

("Select * from Win32_DesktopMonitor")

For Each objScreen In colSettings

MsgBox "屏幕高:" & objScreen.ScreenHeight & vbCrLf _

& "屏幕宽:" & objScreen.ScreenWidth

Next

End Sub

不输入显示灰色字体,输入显示输入内容

Sheet1:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Call M

End Sub

模块:

Sub M()

If Range("B3") = "" Then

Range("B3") = "请在此处输入姓名"

Range("B3").Font.ColorIndex = 16

ElseIf Range("B3") <> "请在此处输入姓名" And Range("B3") <> "" Then

Range("B3").Font.ColorIndex = 1

End If

End Sub

点击单元格自动求和

Sheet1:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Row = 3 Then

Target.Value = Application.WorksheetFunction.Sum(Range(Cells(4, Target.Column), Cells(65536, Target.Column)))

End If

End Sub

根据第一个工作表A列内容自动创建相应工作表

Sub CreatMySheets()

Dim m As Range, str As String, created As Boolean

On Error GoTo ErrorHandler

For Each m In Range([A1], Cells(Cells.SpecialCells(xlLastCell).Row(), 1))

str = m.Text

If str <> "" Then

If Not created Then

ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)

End If

created = False

https://www.360docs.net/doc/0a18125294.html, = str

End If

Next m

On Error GoTo 0

Set m = Nothing

Application.DisplayAlerts = False

If created Then ActiveSheet.Delete

Excel宏功能简单应用介绍

OFFice几个出色招数 Word独门绝招: 一、输入三个“=”,回车,得到一条双直线; 二、输入三个“~”,回车,得到一条波浪线; 三、输入三个“*”或“-”或“#”,回车,惊喜多多; Powerpoint出色过招: Q:如果已经word写好一份报告,并且要根据报告的内容做幻灯片,怎么直接把 word文档的标题发送到powerPoint? A:打开word文档,从“文件”菜单单击“发送”命令,再选择发送到ppt。ppt 会自动启动,并且根据每个word文档的一级标题建立一张相同标题的幻灯片,其下的二级标题也会被自动添加到幻灯片。 Excel宏功能简单应用介绍 所谓宏,就是一组指令集,通过执行类似批处理的一组命令,来完成某种功能。Microsoft Office的组件都可以支持宏(Macro)的操作,而Office的宏是指使用VB Script指令集(VB编程语言的子集,可以使用VB的常用语句)编写的针对Office组件的小程序。利用宏,我们可以完成很多程序原本并不支持的特殊应用,比如完成某种特殊的数据计算,或者文档的特殊格式排版等等。下面,就让我们举个简单的例子,看看宏在Excel中如何应用。 有这样一个Excel表格,工作表Sheet1中的第2行的B列开始至D列的连续单元格中是一组共3个数据,第A列的第3行开始至第6行的连续单元格中是一组共4个日期,要编写一段宏来完成这样的工作:将Sheet1第2行的数据由左至右依次纵向复制到Sheet2的B列(从B2开始)中,然后将这组复制完的3个数据所在行的A列都填入Sheet1的A3单元格里面的日期,完成后重复之前的操作,将Sheet1第2行的数据再次复制到Sheet2的B列,这次是从上次复制的B列数据下面的空白单元格,也就是B5开始,然后再在这次复制的3个数据的左侧A列填入Sheet1的A4单元格的日期,这样反复循环,直到Sheet1的A列的所有日期都出现在了Sheet2的A列里面,也就是Sheet1的第2行数据在Sheet2的B列里面被复制了4次为止。 编写宏只要有一点点简单的VB编程知识就可以了,并不一定需要很高深的编程技巧,很多时候我们需要的只是一些重复的操作,我们可以通过宏的录制功

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

常见字典用法集锦及代码详解 前言 凡是上过学校的人都使用过字典,从新华字典、成语词典,到英汉字典以及各种各样数不胜数的专业字典,字典是上学必备的、经常查阅的工具书。有了它们,我们可以很方便的通过查找某个关键字,进而查到这个关键字的种种解释,非常快捷实用。 凡是上过EH论坛的想学习VBA里面字典用法的,几乎都看过研究过northwolves狼版主、oobird版主的有关字典的精华贴和经典代码。我也是从这里接触到和学习到字典的,在此,对他们表示深深的谢意,同时也对很多把字典用得出神入化的高手们致敬,从他们那里我们也学到了很多,也得到了提高。 字典对象只有4个属性和6个方法,相对其它的对象要简洁得多,而且容易理解使用方便,功能强大,运行速度非常快,效率极高。深受大家的喜爱。 本文希望通过对一些字典应用的典型实例的代码的详细解释来

给初次接触字典和想要进一步了解字典用法的朋友提供一点备查的参考资料,希望大家能喜欢。 给代码注释估计是大家都怕做的,因为往往是出力不讨好的,稍不留神或者自己确实理解得不对,还会贻误他人。所以下面的这些注释如果有不对或者不妥当的地方,请大家跟帖时指正批评,及时改正。 字典的简介 字典(Dictionary)对象是微软Windows脚本语言中的一个很有用的对象。 附带提一下,有名的正则表达式(RegExp)对象和能方便处理驱动器、文件夹和文件的(FileSystemObject)对象也是微软Windows脚本语言中的一份子。 字典对象相当于一种联合数组,它是由具有唯一性的关键字(Key)和它的项(Item)联合组成。就好像一本字典书一样,是

VBA常用代码大全

.、八、- 刖言 我们平时在工作表单元格的公式中常常使用函数,EGcel自带的常用的函数多达300多个, 功能强大,丰富多彩,但是在 VBA中不能直接应用,必须在函数名前面加上对象,比如:Applicatio n. WorksheetF un ctio n.Sum(arg1,arg2,arg3) 。 而能在VBA中直接应用的函数也有几十个,下面将逐一详细介绍常用的40个VBA函数, 以供大家学习参考。 第1.1例ASC函数 一、题目: 要求编写一段代码,运行后得到字符串”EGcel”的首字母和” e”的ASCII值。 二、代码: Sub 示例_1_01() DimmyNum1%,myNum2% myNum仁Asc("EGcel")'返回 69 myNum2=Asc("e")' 返回 101 [a1]="myNum 1=":[b1]=myNum1 [a2]="myNum2=":[b2]=myNum2 En dSub 三、代码详解 1、Sub示例_1_01():宏程序的开始语句。 2、DimmyNum1%,myNum2% :变量 myNum1 和 myNum2 声明为整型变量。 也可以写为DimmyNum1AsInteger 。Integer变量存储为16位(2个字节)的数值形式,

其范围为-32,768到32,767之间。Integer的类型声明字符是百分比符号(%)。 3、myNum1=Asc("EGcel"):把 Asc 函数的值赋给变量 myNum1 。 Asc函数返回一个Integer,代表字符串中首字母的字符的 ASCII代码。 语法 Asc(stri ng) 必要的string (字符串)参数可以是任何有效的字符串表达式。如果string中没有包含任何字符,则会产生运行时错误。 4、myNum2=Asc("e"):把Asc函数的值赋给变量myNum2。这里返回小写字母e的ASCII 代码101。 5、 [a1]="myNum仁":[b1]=myNum1 :把字符串“ myNum仁“赋给A1单元格,把变量myNum1的值赋给B1单元格。 6、 [a2]="myNum2=":[b2]=myNum2 :把字符串“ myNum2= “赋给 A2 单元格,把变量myNum2的值赋给B2单元格。 7、 EndSub :程序的结束语句,和“ Sub示例_1_01 ()”相对应。 第1.2例Chr函数 一、题目"": 要求编写一段代码,运用 Chr函数将ASCII值转换为对应的字符 二、代码: Sub 示例_1_02() DimmyChar1$,myChar2$ myChar仁Chr(69)'返回 E。 myChar2=Chr(101)' 返回 e。 [a1]="myChar1=":[b1]=myChar1 [a2]="myChar2=":[b2]=myChar2

Excel VBA常用代码VSTO版20150425

21-1 使用工作表的名称 this.Application.Worksheets["工作表2"].Activate(); 21-2 使用工作的索引号 this.Application.Worksheets[2].Activate(); 21-3 使用工作表的代码名称 MessageBox.Show(this.Application.ActiveSheet.CodeName); 21-4 用ActiveSheet属性引用活动工作表 this.Application.Worksheets[2].Select(); MessageBox.Show(https://www.360docs.net/doc/0a18125294.html,); 22-1 选择工作表的方法 this.Application.Worksheets[2].Select(); this.Application.Worksheets[2].Activate(); 23-1 使用For遍历工作表 intwkCount = this.Application.Worksheets.Count; string s = string.Empty; for (inti = 1; i<= wkCount; i++) { s = s + this.Application.Worksheets[i].Name + "\n"; } MessageBox.Show("工作簿中含有以下工作表:" + "\n" + s); 23-2 使用ForEach语句 string s = string.Empty; foreach (Excel.Worksheetwk in this.Application.Worksheets) { s = s + https://www.360docs.net/doc/0a18125294.html, + "\n"; } MessageBox.Show("工作簿中含有以下工作表:" + "\n" + s); 24-1 在工作表中向下翻页 Excel.Sheetsshs=Globals.ThisWorkbook.Worksheets; Excel.WorksheetwkThis = shs.Application.ActiveSheet; Excel.WorksheetwkNext; intwkIndex = wkThis.Index; intwkCount = shs.Count; if (wkIndex

[实用参考]VBA常用代码大全.doc

前言 我们平时在工作表单元格的公式中常常使用函数,EGcel自带的常用的函数多达300多个,功能强大,丰富多彩,但是在VBA中不能直接应用,必须在函数名前面加上对象,比如:Application.WorksheetFunction.Sum(arg1,arg2,arg3)。 而能在VBA中直接应用的函数也有几十个,下面将逐一详细介绍常用的40个VBA函数,以供大家学习参考。 第1.1例ASC函数 一、题目: 要求编写一段代码,运行后得到字符串”EGcel”的首字母和”e”的ASCII值。二、代码: Sub示例_1_01() DimmyNum1%,myNum2% myNum1=Asc("EGcel")'返回69 myNum2=Asc("e")'返回101 [a1]="myNum1=":[b1]=myNum1 [a2]="myNum2=":[b2]=myNum2 EndSub 三、代码详解 1、Sub示例_1_01():宏程序的开始语句。 2、DimmyNum1%,myNum2%:变量myNum1和myNum2声明为整型变量。 也可以写为DimmyNum1AsInteger。Integer变量存储为16位(2个字节)的数值形式,其范围为-32,768到32,767之间。Integer的类型声明字符是百分比符号(%)。 3、myNum1=Asc("EGcel"):把Asc函数的值赋给变量myNum1。

Asc函数返回一个Integer,代表字符串中首字母的字符的ASCII代码。 语法 Asc(string) 必要的string(字符串)参数可以是任何有效的字符串表达式。如果string中没有包含任何字符,则会产生运行时错误。 4、myNum2=Asc("e"):把Asc函数的值赋给变量myNum2。这里返回小写字母e的ASCII代码101。 5、[a1]="myNum1=":[b1]=myNum1:把字符串“myNum1=“赋给A1单元格,把变量myNum1的值赋给B1单元格。 6、[a2]="myNum2=":[b2]=myNum2:把字符串“myNum2=“赋给A2单元格,把变量myNum2的值赋给B2单元格。 7、EndSub:程序的结束语句,和“Sub示例_1_01()”相对应。 第1.2例Chr函数 一、题目"": 要求编写一段代码,运用Chr函数将ASCII值转换为对应的字符。 二、代码: Sub示例_1_02() DimmyChar1$,myChar2$ myChar1=Chr(69)'返回E。 myChar2=Chr(101)'返回e。 [a1]="myChar1=":[b1]=myChar1 [a2]="myChar2=":[b2]=myChar2 EndSub 三、代码详解

EXCEL常用VBA代码

删除B列中字符串数值少于21的单元格所在的行 Sub 删除行() r = Range("B65536").End(xlUp).Row '行数 For h = r To 1 Step -1 If Cells(h, 2) < 21 Then Cells(h, 2).EntireRow.Delete Next End Sub ------------------------- 【工作表合并】将同一工作簿中的所有工作表合并到一个工作表中 新建一个工作表,写入代码[在新建的工作表标签处右键查看代码(找不到的直接按一下alt+F11) 把下面的代码复制进去然后点上面的运行运行子程序即可]: Sub 合并当前工作簿下的所有工作表() Application.ScreenUpdating = False For j = 1 To Sheets.Count If Sheets(j).Name <> https://www.360docs.net/doc/0a18125294.html, Then X = Range("A65536").End(xlUp).Row + 1 Sheets(j).UsedRange.Copy Cells(X, 1) End If Next Range("B1").Select Application.ScreenUpdating = True MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示" End Sub ********************************************************* 代码这样写也行: Sub c() For i = Sheets.Count To 2 Step -1 Sheets(i).Select Sheets(i).UsedRange.Copy Sheets(1).Select Cells(Cells(65000, 1).End(xlUp).Row + 1, 1).Select ActiveSheet.Paste 'Sheets(i).Delete Next i End Sub ************************************************************ 把一个工作簿中的所有表单合并成一个表单,怎么去掉重复的表头、标题行?方法如下:

Excel VBA常用代码总结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

EXCELVBA常用代码实战大全共393页word资料

VBA常用技巧代码解析 yuanzhuping 1VBA VBAVBA VBA常用 常用常用 常用技巧 技巧技巧 技巧 目录 目录目录 目录 VBA VBAVBA VBA常用技巧 常用技巧常用技巧 常用技巧 ------------------------------------------------------------------------------------------------------- 1 第1章 Range(单元格)对象 -------------------------------------------------------------------- 10 技巧1 单元格的引用方法 ---------------------------------------------------------------------- 10 1-1 使用Range属性 ----------------------------------------------------------------------- 10 1-2 使用Cells属性 ------------------------------------------------------------------------ 11 1-3 使用快捷记号 -------------------------------------------------------------------------- 11 1-4 使用Offset属性 ----------------------------------------------------------------------- 12 1-5 使用Resize属性 ----------------------------------------------------------------------- 13 1-6 使用Union方法 ----------------------------------------------------------------------- 14 1-7 使用UsedRange属性 ---------------------------------------------------------------- 14 1-8 使用CurrentRegion属性 ------------------------------------------------------------ 15 技巧2 选定单元格区域的方法---------------------------------------------------------------- 15 2-1 使用Select方法 ----------------------------------------------------------------------- 15 2-2 使用Activate方法 -------------------------------------------------------------------- 16 2-3 使用Goto方法 ------------------------------------------------------------------------- 17 技巧3 获得指定行、列中的最后一个非空单元格 -------------------------------------- 17 技巧4 定位单元格 ------------------------------------------------------------------------------- 20

Excel VBA编程的常用代码

用过VB的人都应该知道如何声明变量,在VBA中声明变量和VB中是完全一样的! 使用Dim语句 Dim a as integer '声明a为整型变量 Dim a '声明a为变体变量 Dim a as string '声明a为字符串变量 Dim a as currency ,b as currency ,c as currency '声明a,b,c为货币变量 ...... 声明变量可以是:Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(当前不支持)、Date、String(只限变长字符串)、String * length(定长字符串)、Object、Variant、用户定义类型或对象类型。 强制声明变量 Option Explicit 说明:该语句必在任何过程之前出现在模块中。 声明常数 用来代替文字值。 Const ' 常数的默认状态是 Private。 Const My = 456 ' 声明 Public 常数。 Public Const MyString = "HELP" ' 声明 Private Integer 常数。 Private Const MyInt As Integer = 5 ' 在同一行里声明多个常数。 Const MyStr = "Hello", MyDouble As Double = 3.4567 选择当前单元格所在区域 在EXCEL97中,有一个十分好的功能,他就是把鼠标放置在一个有效数据单元格中,执行该段代码,你就

可以将连在一起的一片数据全部选中。只要将该段代码加入到你的模块中。 Sub My_Select Selection.CurrentRegion.Select End sub 返回当前单元格中数据删除前后空格后的值 sub my_trim msgbox Trim(ActiveCell.Value) end sub 单元格位移 sub my_offset ActiveCell.Offset(0, 1).Select'当前单元格向左移动一格 ActiveCell.Offset(0, -1).Select'当前单元格向右移动一格 ActiveCell.Offset(1 , 0).Select'当前单元格向下移动一格 ActiveCell.Offset(-1 , 0).Select'当前单元格向上移动一格 end sub 如果上述程序产生错误那是因为单元格不能移动,为了解除上述错误,我们可以往 sub my_offset 之下加一段代码 on error resume next 注意以下代码都不再添加sub “代码名称” 和end sub请自己添加! 给当前单元格赋值 ActiveCell.Value = "你好!!!" 给指定单元格赋值 例如:A1单元格内容设为"HELLO" Range("a1").value="hello" 又如:你现在的工作簿在sheet1上,你要往sheet2的A1单元格中插入"HELLO" 1. sheets("sheet2").select

一些实用的excel宏

Excel宏教程 一、选中单个单元格 Range(“<单元格地址>“).Select 例:Range("C9").Select …选中“C9”单元格 二、选中多个单元格 Range(“<单元格地址>:<单元格地址>[,<单元格地址>……]”).Select 例:Range(“A1:B2”).Select…选中“A1”、“A2”、“B1”、“B2”四个连续的单元格Range(“12:12”).Select…选中第12行 Range(“B:B”).Select…选中第B列 Range(“A1:A2,B7,2:2”).Select…选中“A1”、“A2”、“B7”五个不连续的单元格和第二行Cells.Select …选中当前SHEET中的所有单元格 Rows("<行地址>:<行地址>").Select …选中整行 Columns("<列地址>:<列地址>").Select …选中整列 例:Rows(“2:2”). Select…选中第2行 Rows(“2:5”). Select…选中2到5行 Columns("A:A").Select …选中A列 Columns("E:B").Select …选中E到B列

三、设置活动单元格 Range("<单元格地址>").Activate 注:设置活动单元格与选中单元格类似,不同之处就是 后者在选中指定的单元格之前会将在此前已被选中的单元格取消掉。 前者在设置之前不会取消已选中的单元格, 如果此时操作的单元格不是被选中的单元格,这时他实现的功能与选一个单元格相同。 四、给活动的单元格赋值 ActiveCell.FormulaR1C1 = <值> 例:Range("A1").Select ActiveCell.FormulaR1C1 = "Name" Range("B1").Select ActiveCell.FormulaR1C1 = "Age" Range("A2:B3").Select Range("A2").Activate ActiveCell.FormulaR1C1 = " BUG" Range("B2").Activate ActiveCell.FormulaR1C1 = "12" Range("A3").Activate ActiveCell.FormulaR1C1 = "Archer" Range("B3").Activate ActiveCell.FormulaR1C1 = "37"

ExcelVBA常用代码VSTO版

Excel VBA常用代码VSTO版(C#) 1-1使用Range属性 this.Range["A3:F6, B1:C5"].Select(); 1-2使用Cells属性 for(int icell=1;icell<=100;icell++) { this.Application.Worksheets[2].cells[icell, 1].value = icell; } 1-3使用快捷记号 #N/A 1-4使用Offset属性 this.Range["A1:A3"].Offset[3, 3].Select(); 1-5使用Resize属性 this.Range["A1"].Resize[3, 3].Select(); 1-6使用Union属性 this.Application.Union(this.Range["A1:D4"], this.Range["E5:H8"]).Select(); 1-7使用UsedRange属性 https://www.360docs.net/doc/0a18125294.html,edRange.Select(); 1-8使用CurrentRegion属性 this.Range["A5"].CurrentRegion.Select(); 2-1 使用Select方法 this.Application.Worksheets[3].Activate(); this.Application.Worksheets[3].Range["A1:B10"].Select(); 2-2 使用Activate方法 this.Application.Worksheets[3].Activate(); this.Application.Worksheets[3].Range["A1:B10"].Activate(); 注:此处的代码,可以运行,但是只会选中A1这一个单元格 2-3 使用Goto方法

Excel宏功能简单应用介绍

Excel宏功能简单应用介绍 所谓宏,就是一组指令集,通过执行类似批处理的一组命令,来完成某种功能。MicrosoftOffice的组件都可以支持宏(Macro)的操作,而Office的宏是指使用VB Script指令集(VB编程语言的子集,可以使用VB的常用语句)编写的针对Office组件的小程序。利用宏,我们可以完成很多程序原本并不支持的特殊应用,比如完成某种特殊的数据计算,或者文档的特殊格式排版等等。下面,就让我们举个简单的例子,看看宏在Excel中如何应用。 有这样一个Excel表格,工作表Sheet1中的第2行的B列开始至D列的连续单元格中是一组共3个数据,第A列的第3行开始至第6行的连续单元格中是一组共4个日期,要编写一段宏来完成这样的工作:将Sheet1第2行的数据由左至右依次纵向复制到Sheet2的B列(从B2开始)中,然后将这组复制完的3个数据所在行的A列都填入Sheet1的A3单元格里面的日期,完成后重复之前的操作,将Sheet1第2行的数据再次复制到Sheet2的B列,这次是从上次复制的B列数据下面的空白单元格,也就是B5开始,然后再在这次复制的3个数据的左侧A列填入Sheet1的A4单元格的日期,这样反复循环,直到She et1的A列的所有日期都出现在了Sheet2的A列里面,也就是Sheet1的第2行数据在 Sheet2的B列里面被复制了4次为止。 编写宏只要有一点点简单的VB编程知识就可以了,并不一定需要很高深的编程技巧,很多时候我们需要的只是一些重复的操作,我们可以通过宏的录制功能来录制一次需要的操作过程,然后再对已经录制的宏进行简单的修改,就能得到所需要的宏了。 对于上面这个事例,实际上只是简单的复制操作,所以甚至连录制的工作都可以省掉了。因为所需要的操作是一个循环的过程,所以我们可以使用一个循环语句来编写程序,这样只要写出一个完成的复制过程,一次循环就可以达到我们的目的了。循环判断的依据就是是否Sheet1的A列所有日期都复制过了,因为数据都是连续排列的,艘以我们可以把Sheet1的A列某个单元格是否有数据作为进入循环的条件,依次复制日期,直到A7这个没有数据的空单元格,循环结束,我们的工作也就完成了。至于循环里面的内容,我们同样再嵌套一个循环,只不过这次是判断第2行的数据是否全都复制完成了,在这个循环里面自然就是单元格数据和日期的复制了。 Sub Macro1() Dim st1y Dim st2y Dim st1x

办公高手EXCEL常用宏命令

办公高手.EXCEL常用宏命令 1 设置打开时弹出对话框的命令举例: Sub AUTO_OPEN() "输入打开工作表时要运行的代码或宏" End Bub 2 设置关闭时弹出对话框的命令举例: Sub AUTO_CLOSE() "输入关闭工作表时要运行的代码或宏" End Bub 3 设置提示框举例: MsgBox prompt:="温馨提示:您要打开的工作表有保护!", Buttons:=vbOKOnly, Title:="谷子提示 " i = MsgBox("系统提供不同服务,是否浏览资费信息?", vbYesNoCancel, "谷子提示:") If i = vbYes Then MsgBox "资费信息:********", , "谷子提示" Else "输入要运行的代码" End If 4、提示框内容过长,换行vbNewLine: MsgBox "您本次访问系统的时间是:" & Date & " " & Time & vbNewLine & "系统离到期日还剩余:" _ & DateDiff("d", Now, "2010-12-31") & " 天!" & vbNewLine & "是否查阅到期日说明?", vbYesNoCancel, "时间和到期日提示:" 5 提示提示系统的日期和时间: MsgBox "系统当前日期和时间:" & Date & " " & Time, , "时间提示" DateDiff("d", Now, "2010-10-31") & " 天!" ‘提示离指定日期的剩余天数 6 系统时间判断命令: Sub 判断时间测试() If Date > "2010-05-20" Then MsgBox "对不起,测试期间已经结束", , "谷子提示" Else Sheets("首页").Select '或其他命令 End If End Sub 7 禁止保存或另存的命令: Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) MsgBox ("禁止保存") Cancel = True '或thisworkbook.saved=true End Sub 8 保护工作表与撤销保护 Sheet2.Protect Password:="123456", DrawingObjects:=True, Contents:=True, Scenarios:=True '保护工作表SHEET2 Sheet2.Unprotect ("123456") '解除保 护 9 保护工作簿与撤销保护 ActiveWorkbook.Protect Structure:=True, Windows:=False, Password:="123" ActiveWorkbook.Unprotect Password:="123"

Excel VBA编程的常用代码

Excel VBA编程的常用代码 用过VB的人都应该知道如何声明变量,在VBA中声明变量和VB中是完全一样的! 使用Dim语句 Dim a as integer '声明a为整型变量 Dim a '声明a为变体变量 Dim a as string '声明a为字符串变量 Dim a as currency ,b as currency ,c as currency '声明a,b,c为货币变量 ...... 声明变量可以是:Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal (当前不支持)、Date、String(只限变长字符串)、String * length(定长字符串)、Object、Variant、用户定义类型或对象类型。 强制声明变量 Option Explicit 说明:该语句必在任何过程之前出现在模块中。 声明常数

用来代替文字值。 Const ' 常数的默认状态是Private。 Const My = 456 ' 声明Public 常数。 Public Const MyString = "HELP" ' 声明Private Integer 常数。 Private Const MyInt As Integer = 5 ' 在同一行里声明多个常数。 Const MyStr = "Hello", MyDouble As Double = 3.4567 选择当前单元格所在区域 在EXCEL97中,有一个十分好的功能,他就是把鼠标放置在一个有效数据单元格中,执行该段代码,你就可以将连在一起的一片数据全部选中。只要将该段代码加入到你的模块中。 Sub My_Select Selection.CurrentRegion.Select End sub 返回当前单元格中数据删除前后空格后的值 sub my_trim msgbox Trim(ActiveCell.Value)

excel代码大全

excel代码大全.txt第一次笑是因为遇见你,第一次哭是因为你不在,第一次笑着流泪是因为不能拥有你。EXCEL宏代码大全 本文件部分文章来源于网络,文章版权归原作者所有,如果本站转载的文章侵犯了您的权益请及时联系我们,我们将尽快妥善处理。本站除部分特别声明禁止转载的专稿外,其他文章可以自由转载,但请务必注明原出处和作者。 000. A列半角内容变红 Sub A列半角内容变红() Dim rg As Range, i As Long = False For Each rg In (xlCellTypeConstants, 3) For i = 1 To Len(rg) If Asc(Mid(rg, i, 1)) 001. A列等于A列减B列 Sub A列等于A列减B列() For i = 1 To 23 Cells(i, 1) = Cells(i, 1) - Cells(i, 2) Next End Sub 002. B列录入数据时在A列返回记录时间(工作表代码) Public Sub Worksheet_Change(ByVal Target As Range) If = 2 Then (, -1) = Now End If End Sub 003. Excel宏常用代码 本大类暂没有内容,以下是关于本类的所有记录集。 004. Sub 以当前日期为名称另存文件() Filename:=Date & ".xls" End Sub 005. Sub 启用保存() ("File").Controls(4).Enabled = True ("File").Controls(5).Enabled = True End Sub 006. Sub 执行前需要验证密码的宏()

Excel VBA 常用代码50例

Excel VBA 常用代码50例 001。用命令按扭打印一个sheet1中B2:M30区域中的内容? 我想在Sheet2中制件一个命令按扭, 打印表Sheet1中的[B2:M30] 区域中的内容? 解答:可以将打印区域设为b2:m30,然后打印,如:sheets("sheet1").printarea="b2:m30" sheets("sheet1").printout 随手写的,你可以试试看。最简单的方法是:你先录制宏,在录制宏过程中,跑到页面设臵里面,把打印范围设臵到你想要的范围。 然后退出,停止录制宏,你就可以得到一些代码! 002。能否对一列中的文字统一去掉最后一个字?这些文字不统一,有些字数多,有些字数少。如何处理?我用{"&-}不行 解答:=REPLACE(A1,LEN(A1),1," ")(在过渡列进行) 003.能否根据单元格数值自动标记序号? 各位大佬,一工作表有两列,“序号”及“金额”,能否将金额不等于0的行自动标上序号呢?如无现成的函数,应怎样设臵? 解答:Dim xuhao As Integer xuhao = 1

Range("b2").Select Do While Selection <> "" If Selection <> 0 Then ActiveCell.Previous.Value = xuhao xuhao = xuhao + 1 End If ActiveCell.Offset(1, 0).Range("a1").Select Loop 004.求教自定义函数 查询了一些自定义函数的例子都是单变量的。自定义函数能否建立“(As Range) As Interger”的函数,应该可以的,请各位大师赐教!请以“∑x2”为例,万分感谢!(该用"For Each ...Next",就是还不知道如何引用Range中的每个值,请高手指点。) 解答:参数使用Range而函数值为Integer是可以的 用for each next循环思路也是对的,应该这样作: dim rg as range dim ivalue as integer for each rg in 参数区域 ivalue=ivalue+rg.value next

EXCEL如何使用宏

在介绍学习VBA之前,应该花几分钟录制一个宏。 新术语:“宏”,指一系列EXCEL能够执行的VBA语句。 以下将要录制的宏非常简单,只是改变单元格颜色。请完成如下步骤: 1)打开新工作簿,确认其他工作簿已经关闭。 2)选择A1单元格。调出“常用”工具栏。 3)选择“工具”—“宏”—“录制新宏”。 4)输入“改变颜色”作为宏名替换默认宏名,单击确定,注意,此时状态栏中显示“录制”,特别是“停止录制”工具栏也显示出来。替换默认宏名主要是便于分别这些宏。 ★宏名最多可为255个字符,并且必须以字母开始。其中可用的字符包括:字母、数字和下划线。宏名中不允许出现空格。通常用下划线代表空格。 5)选择“格式”的“单元格”,选择“图案”选项中的红色,单击“确定”。 6)单击“停止录制”工具栏按钮,结束宏录制过程。 ※如果“停止录制”工具栏开始并未出现,请选择“工具”—“宏”—“停止录制”。 录制完一个宏后就可以执行它了。 1.4 执行宏 当执行一个宏时,EXCEL按照宏语句执行的情况就像VBA代码在对EXCEL进行“遥控”。但VBA的“遥控”不仅能使操作变得简便,还能使你获得一些使用EXCEL标准命令所无法实现的功能。而且,一旦熟悉了EXCEL的“遥控”,你都会奇怪自己在没有这些“遥控”的情况下,到底是怎么熬过来的。要执行刚才录制的宏,可以按以下步骤进行: 1)选择任何一个单元格,比如A3。 2)选择“工具”—“宏”—“宏”,显示“宏”对话框。 3)选择“改变颜色”,选择“执行”,则A3单元格的颜色变为红色。试着选择其它单元格和几个单元格组成的区域,然后再执行宏,以便加深印象。 1.5 查看录制的代码 到底是什么在控制EXCEL的运行呢?你可能有些疑惑.好,让我们看看VBA的语句吧. 1)选择“工具”—“宏”—“宏”,显示“宏”对话框。 2)单击列表中的“改变颜色”,选择“编辑”按钮。 此时,会打开VBA的编辑器窗口(VBE)。关于该编辑器,以后再详细说明,先将注意力集中到显示的代码上。代码如下:(日期和姓名会有不同) Sub 改变颜色() ' ' 改变颜色Macro ' xw 记录的宏2000-6-10 ' ' With Selection.Interior

excel常用宏

1.拆分单元格赋值 Sub 拆分填充() Dim x As Range For Each x In https://www.360docs.net/doc/0a18125294.html,edRange.Cells If x.MergeCells Then x.Select x.UnMerge Selection.Value = x.Value End If Next x End Sub 2.E xcel 宏按列拆分多个excel Sub Macro1() Dim wb As Workbook, arr, rng As Range, d As Object, k, t, sh As Worksheet, i& Set rng = Range("A1:f1") Application.ScreenUpdating = False Application.DisplayAlerts = False arr = Range("a1:a" & Range("b" & Cells.Rows.Count).End(xlUp).Row) Set d = CreateObject("scripting.dictionary") For i = 2 To UBound(arr) If Not d.Exists(arr(i, 1)) Then Set d(arr(i, 1)) = Cells(i, 1).Resize(1, 13) Else Set d(arr(i, 1)) = Union(d(arr(i, 1)), Cells(i, 1).Resize(1, 13)) End If Next k = d.Keys t = d.Items For i = 0 To d.Count - 1 Set wb = Workbooks.Add(xlWBATWorksheet) With wb.Sheets(1) rng.Copy .[A1] t(i).Copy .[A2] End With wb.SaveAs Filename:=ThisWorkbook.Path & "\" & k(i) & ".xlsx" wb.Close Next

相关文档
最新文档