文档库 最新最全的文档下载
当前位置:文档库 › Excel VBA编程常用代码

Excel VBA编程常用代码

Excel VBA编程常用代码
Excel VBA编程常用代码

Excel VBA编程常用代码

时间:2009-12-05 22:36:04 来源:本站作者:未知我要投稿我要收

藏投稿指南

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

range("a1").value="hello"

2.

Sheets("sheet1").Range("a1").Value = "hello"

说明:

1.sheet2被选中,然后在将“HELLO"赋到A1单元格中。

2.sheet2不必被选中,即可“HELLO"赋到sheet2 的A1单元格中。

隐藏工作表

'隐藏SHEET1这张工作表

sheets("sheet1").Visible=False

'显示SHEET1这张工作表

sheets("sheet1").Visible=True

打印预览

有时候我们想把所有的EXCEL中的SHEET都打印预览,请使用该段代码,它将在你现有的工作簿中循环,直到最后一个工作簿结束循环预览。

Dim my As Worksheet

For Each my In Worksheets

my.PrintPreview

Next my

得到当前单元格的地址

msgbox ActiveCell.Address

得到当前日期及时间

msgbox date & chr(13) & time

保护工作簿

ActiveSheet.Protect

取消保护工作簿

ActiveSheet.Unprotect

给活动工作表改名为 "liu"

https://www.wendangku.net/doc/6b14787263.html, = "liu"

打开一个应用程序

AppActivate (Shell("C:WINDOWSCALC.EXE"))

增加一个工作表

Worksheets.Add

删除活动工作表

activesheet.delete

打开一个工作簿文件

Workbooks.Open FileName:="C:My DocumentsBook2.xls" 关闭活动窗口

ActiveWindow.Close

单元格格式

选定单元格左对齐

Selection.HorizontalAlignment = xlLeft

选定单元格居中

Selection.HorizontalAlignment = xlCenter

选定单元格右对齐

Selection.HorizontalAlignment = xlRight

选定单元格为百分号风格

Selection.Style = "Percent"

选定单元格字体为粗体

Selection.Font.Bold = True

选定单元格字体为斜体

Selection.Font.Italic = True

选定单元格字体为宋体20号字

With Selection.Font

.Name = "宋体"

.Size = 20

End With

With 语句

With 对象

.描述

End With

清除单元格

ActiveCell.Clear '删除所有文字、批注、格式

返回选定区域的行数

MsgBox Selection.Rows.Count

返回选定区域的列数

MsgBox Selection.Columns.Count

返回选定区域的地址

Selection.Address

忽略所有的错误

ON ERROR RESUME NEXT

遇错跳转

on error goto err_handle

'中间的其他代码

err_handle: ' 标签

'跳转后的代码

删除一个文件

kill "c:1.txt"

定制自己的状态栏

Application.StatusBar = "现在时刻: " & Time

恢复自己的状态栏

Application.StatusBar = false

用代码执行一个宏

Application.Run macro:="text"

滚动窗口到a1的位置

ActiveWindow.ScrollRow = 1

ActiveWindow.ScrollColumn = 1

定制系统日期

Dim MyDate, MyDay

MyDate = #12/12/69#

MyDay = Day(MyDate)

返回当天的时间

Dim MyDate, MyYear

MyDate = Date

MyYear = Year(MyDate)

MsgBox MyYear

inputbox<输入框>

XX=InputBox ("Enter number of months to add")

得到一个文件名

Dim kk As String

kk = Application.GetOpenFilename("EXCEL (*.XLS), *.XLS", Title:="提示:请打开一个EXCEL文件:")

msgbox kk

打开zoom对话框

Application.Dialogs(xlDialogZoom).Show

激活字体对话框

Application.Dialogs(xlDialogActiveCellFont).Show

打开另存对话框

Dim kk As String

kk = Application.GetSaveAsFilename("excel (*.xls), *.xls") Workbooks.Open kk

1 excle快捷键大全

对工具栏进行操作的快捷键

激活菜单栏,F10,Alt

选定前一个或下一个工具栏,Ctrl+Tab或Ctrl+Shift+Tab

选定工具栏中的下一个或前一个按钮或菜单,Tab或Shift+Tab(当某个工具栏被激活时)

打开选定的菜单,Enter

运行选按钮的操作,Enter

在选定的文本框中输入文本,Enter

在对话框中使用的快捷键

取消当前任务,Esc

单击相应命令,Alt+下划线字母

单击选定的按钮,Enter

在选项中前移,Tab

在选项后移,Shift+Tab

在选项卡中前移,Ctrl+Tab

在选项卡中后移,Ctrl+Shift+Tab

刷新“另存为”或“打开”对话框,F5

插入、删除和复制选定区域的快捷键

复制选定区域,Ctrl+C

粘贴选定区域,Ctrl+V

剪切选定区域,Ctrl+X

清除选定区域的内容,Delete

插入空白单元格,Ctrl+Shift+加号

删除选定区域,Ctrl+-

撤消最后一次操作,Ctrl+Z

使用“office助手”需要用到的快捷键

关闭“office助手”提供的消息,Esc

通过“office助手”获取帮助信息,F1

显示下一项提示,Alt+N

显示前一项提示,Alt+B

在向导中显示或隐藏“office助手”,空格键

对窗口进行操作的快捷键

切换到下一个程序,Alt+Tab

切换到前一个程序,Alt+Shift+Tab

显示windwos“开始”菜单,Ctrl+Esc

关闭活动工作薄窗口,Ctrl+W

恢复活动工作薄窗口,Ctrl+F5

切换到下一个工作薄窗口,Ctrl+F6

切换到前一个工作薄窗口,Ctrl+Shift+F6

执行“移动”命令(菜单栏中的工作薄图标菜单),Ctrl+F7

运行“大小”命令(菜单栏中的工作薄图标菜单),Ctrl+F8

将工作薄窗口最小化为图标,Ctrl+F9

最大化或恢复工作薄窗口,Ctrl+F10

在“打开”或“另存为”对话框中更新可见的文件,F5

使用对话框进行操作的快捷键

切换到对话框中的下一个选项卡,Ctrl+Tab或Ctrl+PageDown

切换到对话框中的前一个选项卡,Ctrl+Shift+Tab或Ctrl+PageUp

移动到下一个选项或选项组,Tab

移动到前一个选项或选项组,Shift+Tab

在活动下拉列表框的选项间移动,或在选项组选项间移动,方向键

招待活动按钮的操作,或选定或清除当前复选框,空格键

取消命令或关闭对话框,Esc

在文本框中进行操作的快捷键

移动到内容的开始,Home

移动到内容的最后,End

向左或向右移动一个字符,左右方向键

向左或向右移动一个字,Ctrl+左右方向键

选定从插入点到开始的输入内容,Shift+Home

选定从插入点到最后的输入内容,Shift+End

选定或取消左面的一个字符,Shift+左方向键

选定或取消右面的一个字符,Shift+右方向键

选定或取消左面的一个字,Ctrl+Shift+左方向键

选定或取消右面的一个字,Ctrl+Shift+右方向键

在工作表和工作薄中选定单元格、列、行或对象的快捷键

选定当前单元格周围的区域,Ctrl+Shift+*(星号)

将选定区域扩展一个单元格宽度,Shift+方向键

将选定区域扩展到与活动单元格同一行或同一列的最后一个非空白单元格,Ctrl+Shift+方向键

将选定区域扩展到行首,Shift+Home

将选定区域扩展到工作表的开始,Ctrl+Shift+Home

将选定区域扩展到工作表的最后一个包含数据的单元格,Ctrl+Shift+End 选定整列,Ctrl+空格键

选定整行,Shift+空格键

选定整个工作表,Ctrl+A

若已选定多个单元格,则只选定其中的活动单元格,Shift+Backspace

将选定区域向下扩展一屏,Shift+PageDown

将选定区域向上扩展一屏,Shift+PageUp

在选定一个对象时,选定工作表上的所有对象,Ctrl+Shift+空格键

在隐藏对象、显示对象与对象占位符之间切换,Ctrl+6

显示或隐藏“常用”工具栏,Ctrl+7

分级显示数据的快捷键

取消行或列分组,Alt+Shift+左方向键

对行或列分组,Alt+Shift+右方向键

显示或隐藏分级显示符号,Ctrl+8

隐藏选定行,Ctrl+9

取消隐藏选定行,Ctrl+Shift+(

隐藏选定列,Ctrl+0

取消隐藏选定列,Ctrl+Shift+)

编辑单元格的快捷键

完成单元格输入,Enter

取消单元格输入,Esc

重复单元格一次操作,F4或Ctrl+Y

在单元格中折行,Alt+Enter

删除插入点左边的字符或删除选定区域,Backspace

删除插入点右边的字符或删除选定区域,Delete

向上下左右移动一个字符,方向键

移到行首,Home

移到行尾,End

编辑单元格批注,Shift+F2

由行或列标志创建名称,Ctrl+Shift+F3

向下填充,Ctrl+D

向右填充,Ctrl+R

用当前输入项填充选定的单元格区域,Ctrl+Enter

完成单元格输入并在选定区域中下移,Enter

完成单元格输入并在选定区域中上移,Shift+Enter

完成单元格输入并在选定区域中右移,Tab

完成单元格输入并在选定区域中左移,Shift+Tab

在单元格或编辑栏中使用的快捷键

键入公式,=(等号)

取消单元格或编辑栏中的输入项,Esc

编辑当前单元格,F2

编辑活动单元格并清除其内容,或在编辑时删除前一个字符,Backspace

将名称粘贴到公式中,F3

定义名称,Ctrl+F3

计算所有打开工作薄中的所有工作表,F9

计算活动工作表,Shift+F9

输入“自动求和”公式,Alt+=(等号)

输入日期,Ctrl+;

输入时间,Ctrl+Shift+:

插入超级链接,Ctrl+K

完成单元格输入,Enter

将当前单元格上方单元格中的数值复制到当前单元格或编辑栏,Ctrl+Shift+(双

引号)

将当前单元格上方单元格中的公式复制到当前单元格或编辑栏,Ctrl+'(单引号) 在显示单元格值与单元格公式间转换,Ctrl+`(撇号)

输入数组公式,Ctrl+Shift+Enter

键入有效函数名后,显示公式选项板,Ctrl+A

键入有效函数名后,为该函数插入变量名和括号,Ctrl+Shift+A

显示“记忆式键入”列表,Ctrl+下方向键

快捷键与数据格式设置

显示“样式”命令,Alt+'(单引号)

显示“单元格”命令,Ctrl+1

应用常规数字格式,Ctrl+Shift+~

应用带两个小数位的“贷币”格式,Ctrl+Shift+$

应用不带小数位的“百分比”格式,Ctrl+shift+%

应用带两个小数位的“科学记数”数字格式,,Ctrl+shift+^

应用年月日“日期”格式,Ctrl+shift+#

应用小时和分钟“时间”格式,并表明上午或下午,Ctrl+shift+@

应用外边框,Ctrl+shift+&

取消选定单元格区域中的所有边框,Ctrl+shift+_

应用或取消字体加粗格式,Ctrl+B

应用或取消字体倾斜格式,Ctrl+I

应用或取消字体下划线格式,Ctrl+U

应用或取消删除线格式,Ctrl+5

隐藏行,Ctrl+9

取消隐藏行,Ctrl+Shift+(

隐藏列,Ctrl+0

取消隐藏列,Ctrl+Shift+)

使用 Excel 2003 工作表的 VBA 示例

适用范围:

Microsoft Office Excel 2003

摘要:寻找能够为 Excel 工作表增加额外功能的宏。只需稍加练习,您就可以扩展这些程序,使其适合您自己的应用程序。

本页内容

引言

导出带有逗号和引号分隔符的文本文件

计算包含公式、文本或数字的单元格数量

使用 Saved 属性确定工作簿是否已发生更

合并数据列

数组中的总行数和总列数

结论

引言

本文介绍几个 Microsoft Visual Basic for Applications (VBA) 宏,您可以使用这些宏为 Microsoft Office Excel 2003 工作簿和工作表增加额外的功能。这些宏将为您的应用程序提供新的功能或增强现有的功能。阅读示例的同时,您

应该寻找扩展这些宏的方法,以适合您自己的情况。

导出带有逗号和引号分隔符的文本文件

Excel 没有自动将数据导出为文本文件的菜单命令,因此导出的文本文件同时带有逗号和引号分隔符。例如,没有命令能自动创建包含以下内容的文本文件:"Text1","Text2","Text3"

但是,您可以使用 VBA 宏在 Excel 中创建该功能。这种文件格式是在诸如Microsoft Office Access 2003 和 Microsoft Office Word 2003 之类的应用程序中导入文本数据时常见的格式。

您可以在如下所示的 VBA 宏中使用 Print 语句,导出同时带有逗号和引号分隔符的文本文件。要使该程序正常运行,必须在运行该程序之前选择包含数据的单元格。

使用以下示例之前,请执行以下步骤:

1. 打开一个新工作簿。

2. 在“工具”菜单中,指向“宏”,然后单击“Visual Basic 编辑器”(或者简单地按下 ALT+F11 组合键)。在“Visual Basic 编辑器”中,单击“插入”菜单,然后单击“模块”。

3. 将以下示例代码键入或粘贴到模块中:

Sub QuoteCommaExport()

Dim DestFile As String

Dim FileNum As Integer

Dim ColumnCount As Integer

Dim RowCount As Integer

' 提示用户指定目标文件名。

DestFile = InputBox("Enter the destination filename" & _

Chr(10) & "(with complete path and extension):", _

"Quote-Comma Exporter")

' 获取下一个可用的文件句柄编号。

FileNum = FreeFile()

' 关闭错误检查功能。

On Error Resume Next

' 尝试打开目标文件以供输出。

Open DestFile For Output As #FileNum

' 如果出现错误,则报告错误并结束程序。

If Err <> 0 Then

MsgBox "Cannot open filename " & DestFile

End

End If

' 打开错误检查功能。

On Error GoTo 0

' 循环选择的每一行。

For RowCount = 1 To Selection.Rows.Count

' 循环选择的每一列。

For ColumnCount = 1 To Selection.Columns.Count

' 将当前单元格中的文本写入到文件中,文本用引号括起来。

Print #FileNum, """" & Selection.Cells(RowCount, _

ColumnCount).Text & """";

' 检查单元格是否位于最后一列。

If ColumnCount = Selection.Columns.Count Then

' 如果是,则写入一个空行。

Print #FileNum,

Else

' 否则,则写入一个逗号。

Print #FileNum, ",";

End If

' 开始 ColumnCount 循环的下一个迭代。

Next ColumnCount

' 开始 RowCount 循环的下一个迭代。

Next RowCount

' 关闭目标文件。

Close #FileNum

End Sub

4. 运行该宏之前,请选择要导出的数据,然后在“工具”菜单中指向“宏”并单击“宏”。

5. 选择 QuoteCommaExport 宏,然后单击“运行”。

计算包含公式、文本或数字的单元格数量

在 Excel 中,您可以对包含公式、文本或数字的工作表中的单元格数量进行计算,方法是使用“定位条件”对话框选择单元格,然后运行计算所选单元格数量的宏。例如,当您需要设置表格以确定合计列的每一行是否都包含公式而不用手动检查每一行时,此方法可能很有用。

选择单元格

要选择公式、文本或数字,请执行以下步骤:

1. 在“编辑”菜单中,单击“定位”,然后单击“定位条件”。

2. 在“定位条件”对话框中,要选择所有公式,请单击“公式”并确保选中“数字”、“文本”、“逻辑值”以及“错误”复选框。要选择文本,请选择“常量”选项,然后仅单击并选中“文本”复选框。要选择数字,请选择“常量”选项,然后仅单击并选中“数字”复选框。

计算所选单元格数量的 VBA 代码

要计算所选的单元格数量并在消息框中显示计算结果,请使用以下程序:

Sub Count_Selection()

Dim cell As Object

Dim count As Integer

count = 0

For Each cell In Selection

count = count + 1

Next cell

MsgBox count & " item(s) selected"

End Sub

您可以将此程序指定给一个命令按钮,这样,当您单击该按钮时,将显示所选项的数量。

使用 Saved 属性确定工作簿是否已发生更改

可以通过检查工作簿的 Saved 属性来确定工作簿是否已发生更改。根据工作簿是否发生了更改,Saved 属性将返回 True 或 False 值。

注意:用户除了可以通过“事件”设置 Saved 属性外,还可以通过代码将其设置为 True 或 False。本节包含的示例宏说明了如何在这两种情况下使用 Saved 属性。

工作表中的各种情况(例如存在可变函数)都可能会影响 Saved 属性。可变函数是指工作表中每次发生更改时都会重新计算的函数,而不管发生的更改是否影响到这些函数。某些常见的可变函数包括 RAND()、NOW()、TODAY() 和 OFFSET()。如果活动工作簿包含未保存的更改,第一个宏将显示如下消息:

Sub TestForUnsavedChanges()

If ActiveWorkbook.Saved = False Then

MsgBox "This workbook contains unsaved changes."

End If

End Sub

下一个宏将关闭包含示例代码的工作簿并放弃对工作簿所做的所有更改:

Sub CloseWithoutChanges()

ThisWorkbook.Saved = True

ThisWorkbook.Close

End Sub

下面的示例宏也将关闭工作簿并放弃更改:

Sub CloseWithoutChanges()

ThisWorkbook.Close SaveChanges:=False

End Sub

合并数据列

在 Excel 中,可以使用宏合并两个相邻列中的数据并在包含数据的右侧列中显示结果,完全不需要手动设置公式。本节包含的示例宏就可以实现此功能。

Sub ConcatColumns()

Do While ActiveCell <> "" ' 一直循环,直到活动单元格为空。

ActiveCell.Offset(0, 1).FormulaR1C1 = _

ActiveCell.Offset(0, -1) & " " & ActiveCell.Offset(0, 0)

ActiveCell.Offset(1, 0).Select

Loop

End Sub

要使用宏,请执行以下步骤:

1. 打开包含数据的工作簿。

2. 按 ALT+F11 组合键激活“Visual Basic 编辑器”。

3. 在“插入”菜单中,单击“模块”以插入一个模块。在模块的代码窗口中键入上面的宏。

4. 单击“文件”菜单中的“关闭并返回到Microsoft Excel”。

5. 选择包含要合并的数据的工作表。

6. 单击要合并的右侧数据列的第一个单元格。例如,如果单元格 A1:A100 和

B1:B100 包含数据,则单击单元格 B1。

7. 在“工具”菜单中,指向“宏”并单击“宏”。选择 ConcatColumns 宏并单击“运行”。

注意:可以用语句 ActiveCell.Offset(0, 1).Formula 替换语句

ActiveCell.Offset(0, 1).FormulaR1C1。如果仅使用文本和数字(不包含公式),那么两个语句的效果相同。第一个语句末尾使用的 R1C1 表示第一行的第一列,这是 Excel 帮助主题中大多数示例使用的形式。

数组中的总行数和总列数

在 Excel 中,可以使用数组来计算和操作工作表中的数据,还可以使用宏将某个范围内的单元格中的值存储到一个数组中。本节中的示例宏代码将在一个矩形单元格区域中添加一行和一列,以包含该区域中每一行和每一列中的单元格总数。

具体的步骤是,代码从活动工作表上活动单元格周围的当前单元格区域中读取数据。宏将这些数据存储在一个数组中,计算每一行和每一列中的单元格总数,然后将输出显示在工作表中。数组的大小由当前区域中的单元格数量决定。

注意:此宏不会在工作表中添加任何公式,因此如果该范围内的单元格总数有变化,则必须重新运行宏。

使用以下示例之前,请执行以下步骤:

1. 打开一个新工作簿。

2. 在“工具”菜单中,指向“宏”,然后单击“Visual Basic 编辑器”(或者简单地按下 ALT+F11 组合键)。在“Visual Basic 编辑器”中的“插入”菜单中,单击“模块”。

将以下示例代码键入或粘贴到模块中:

Sub TotalRowsAndColumns()

' 此宏假定您已从

' 要计算单元格总数的矩形区域内

' 选择了一个单元格或一组单元格。行和列的单元格总数将出现在

' 当前区域下面的行和右侧的列中。

Dim r As Integer

Dim c As Integer

Dim i As Integer

Dim j As Integer

Dim myArray As Variant

' 将 myArray 声明为变量将使数组可以接收

' 一组单元格。此时,数组将自动转换为

' 以下标 myArray(1,1) 开始的数组。

' 指当前所选单元格周围的区域。

With Selection.CurrentRegion

r = .Rows.Count

c = .Columns.Count

' 重新计算总行数和总列数并将结果存储到数组中。

myArray = .Resize(r + 1, c + 1)

' 在下面的嵌套循环中,变量 i 跟踪

' 行号,变量 j 跟踪

' 列号。j 在可用列中每循环一次,

' i 就递增一,而 j

' 则重新从一到 c 循环一次。

For i = 1 To r

For j = 1 To c

' 行 i 的总数

myArray(i, c + 1) = myArray(i, c + 1) + myArray(i, j)

' 列 j 的总数

myArray(r + 1, j) = myArray(r + 1, j) + myArray(i, j)

' 总计

myArray(r + 1, c + 1) = myArray(r + 1, c + 1) + myArray(i, j)

Next j

Next i

' 将数组返回工作表,数组中现在包含一个

' 新行和一个新列,用于存储总数。

.Resize(r + 1, c + 1) = myArray

End With

End Sub

3. 突出显示要求和区域中的一个单元格,在“工具”菜单中,指向“宏”并单击“宏”。

4. 选择 TotalRowsAndColumns 宏,然后单击“运行”。

注意:要执行与本示例中的运算类似的运算,可以修改宏代码。例如,要对选定范围内的单元格中包含的值进行减法、乘法或除法运算,可以更改数学运算符。

结论

本文介绍了各种 VBA 宏,使用这些宏可以减少使用工作表所需的工作量。此外,您还可以修改本文介绍的大多数宏以扩展它们的功能。始终记住可以在工具或提示库中添加更多宏,您将会受益匪浅。

VBA系列讲座(1):VBA是什么?

1.1 VBA是什么

直到90年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言.例如:可以用EXCEL的宏语言来使EXCEL自动化,使用WORD BASIC使WORD自动化,等等.微软决定让它开发出来的应用程序共享一种通用的自动化语言--------Visual Basic For Application(VBA),可以认为VBA是非常流行的应用程序开发语言VASUAL BASIC 的子集.实际上VBA是"寄生于"VB应用程序的版本.VBA和VB的区别包括如下几个方面:

1. VB是设计用于创建标准的应用程序,而VBA是使已有的应用程序(EXCEL 等)自动化

2. VB具有自己的开发环境,而VBA必须寄生于已有的应用程序.

3. 要运行VB开发的应用程序,用户不必安装VB,因为VB开发出的应用程序是可执行文件(*.EXE),而VBA开发的程序必须依赖于它的"父"应用程序,例如EXCEL.

尽管存在这些不同,VBA和VB在结构上仍然十分相似.事实上,如果你已经了解了VB,会发现学习VBA非常快.相应的,学完VBA会给学习VB打下坚实的基础.而且,当学会在EXCEL中用VBA创建解决方案后,即已具备在WORD ACCESS OUTLOOK FOXPRO PROWERPOINT 中用VBA创建解决方案的大部分知识.

* VBA一个关键特征是你所学的知识在微软的一些产品中可以相互转化.

* VBA可以称作EXCEL的“遥控器”.

VBA究竟是什么?更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案.

此外,如果你愿意,还可以将EXCEL用做开发平台实现应用程序.

1.2 EXCEL环境中基于应用程序自动化的优点

也许你想知道VBA可以干什么?使用VBA可以实现的功能包括:

1. 使重复的任务自动化.

2. 自定义EXCEL工具栏,菜单和界面.

3. 简化模板的使用.

4. 自定义EXCEL,使其成为开发平台.

5. 创建报表.

6. 对数据进行复杂的操作和分析.

用EXCEL作为开发平台有如下原因:

1. EXCEL本身功能强大,包括打印,文件处理,格式化和文本编辑.

2. EXCEL内置大量函数.

3. EXCEL界面熟悉.

4. 可连接到多种数据库.

用其他语言开发应用程序,一半的工作是编写一些基本功能的模块,包括文件的打开和保存,打印,复制等.而用EXCEL作为开发平台,则由于EXCEL已经具备这些基本功能,你要做的只是使用它.

1.3 录制简单的宏

在介绍学习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

.ColorIndex = 3

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

End With

End Sub

将来会十分熟悉这种代码,虽然现在它们看上去像一种奇怪的外语。学习VBA

或编程语言在某种程度上比较像在学习一种外语。

Sub 改变颜色():这是宏的名称。

中间的以“ ’”开头的五行称为“注释”,它在录制宏时自动产生。

以With 开头到End With 结束的结构是With结构语句,这段语句是宏的主要部分。注意单词“selection”,它代表“突出显示的区域”(即:选定区域)。With Selection.Interior :它读作“选择区域的的内部”.这整段语句设置该区域内部的一些“属性”。

其中:

.ColorIndex = 3: 将该内部设为红色。注意:有一小圆点,它的作用在于简化语句,小圆点代替出现在With后的词,它是With结构的一部分。另外:红色被数字化为3.(红色警戒是否可称作:3号警戒,嗯?)有兴趣的话,你将3改为其他数字试试看。

.Pattern = xlSolid:设置该区域的内部图案。由于是录制宏,所以,虽然你并未设置这一项,宏仍然将其记录下来(因为在“图案”选项中有此一项,只是你为曾设置而已)。xlSolid表示纯色。

.PatternColorIndex = xlAutomatic:表示内部图案底纹颜色为自动配色。

End With:结束With 语句。

End Sub:整个宏的结束语

1.6 编辑录制的代码

在上一节,我们录制了一个宏并查看了代码,代码中有两句实际上并不起作用。哪两句?现在,在宏中作一个修改,删除多余行,直到和下面代码相同:Sub 改变颜色()

’ 改变颜色 Macro

’ xw 记录的宏 2000-6-10

With Selection.Interior

.ColorIndex = 3

End With

End Sub

完成后,在工作表中试验一下。你会发现结果和修改前的状况一样。在With 语句前加入一行:

Range("A5").Select

试着运行该宏,则无论开始选择哪个单元格,宏运行结果都是使A5单元格变红.

现在可以看到,编辑录制的宏同样非常简单。需要编辑宏是因为以下三个方面的原因。一:在录制中出错而不得不修改。二:录制的宏中有多余的语句需要删除,提高宏的运行速度。三:希望增加宏的功能。比如:加入判断或循环等无法录制的语句。

1.7 录制宏的局限性

希望自动化的许多EXCEL过程大多都可以用录制宏来完成.但是宏记录器存在以下局限性.通过宏记录器无法完成的工作有:

1)录制的宏无判断或循环能力.

2)人机交互能力差,即用户无法进行输入,计算机无法给出提示.

3)无法显示EXCEL对话框.

4)无法显示自定义窗体.

1.8 小结

本学时中,你已经掌握了VBA的一些基础知识,你会录制宏、编辑宏而且了解了录制宏的局限性.你很努力.并且已经为将来学习VBA甚至VB等编程语言打下了基础.关键是你已经了解了一个谜底,就是说,你了解了什么是编程.下面是些小练习,做完后才可以去玩哟.

思考:

1)VBA只能用于EXCEL吗?

2)VBA是基于哪种语言?

3)说说EXCEL和VBA的关系.

4)为什么要用宏?

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

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

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

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.wendangku.net/doc/6b14787263.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.wendangku.net/doc/6b14787263.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

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.wendangku.net/doc/6b14787263.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

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.wendangku.net/doc/6b14787263.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代码大全.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编程的常用代码

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

excelvba编程的常用代码

强制声明变量 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 = 选择当前单元格所在区域 在EXCEL97中,有一个十分好的功能,他就是把鼠标放置在一个有效数据单元格中,执行该段代码,你就可以将连在一起的一片数据全部选中。只要将该段代码加入到你的模块中。Sub My_Select End sub 返回当前单元格中数据删除前后空格后的值 sub my_trim msgbox Trim end sub

单元格位移 sub my_offset (0, 1).Select'当前单元格向左移动一格 (0, -1).Select'当前单元格向右移动一格 (1 , 0).Select'当前单元格向下移动一格 (-1 , 0).Select'当前单元格向上移动一格 end sub 如果上述程序产生错误那是因为单元格不能移动,为了解除上述错误,我们可以往 sub my_offset 之下加一段代码 on error resume next 注意以下代码都不再添加sub “代码名称” 和end sub请自己添加! 给当前单元格赋值 = "你好!!!" 给指定单元格赋值 例如:A1单元格内容设为"HELLO" Range("a1").value="hello" 又如:你现在的工作簿在sheet1上,你要往sheet2的A1单元格中插入"HELLO" 1. sheets("sheet2").select range("a1").value="hello" 或 2. Sheets("sheet1").Range("a1").Value = "hello" 说明: 被选中,然后在将“HELLO"赋到A1单元格中。 不必被选中,即可“HELLO"赋到sheet2 的A1单元格中。

Excel VBA编程常用代码

Excel VBA编程常用代码 时间:2009-12-05 22:36:04 来源:本站作者:未知我要投稿我要收 藏投稿指南 用过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'当前单元格向左移动一格

Excel-VBA常用技巧代码

多个工作薄合并成同一个工作薄,如何合并? 多人填一个同样的工作薄,形成了多个工作薄。如何让几人填了一部分的工作薄合并成终稿。 Sub 汇总() Dim mypath As String, myname As String, Dname As String, sh As Workbook, copyrow As Integer Set sh = ThisWorkbook mypath = ThisWorkbook.Path myname = https://www.wendangku.net/doc/6b14787263.html, Dname = Dir(mypath & "\*.xls") Application.ScreenUpdating = False Do While Dname <> "" If Dname <> myname Then copyrow = 1 With GetObject(mypath & "\" & Dname) For i = 1 To .Worksheets.Count If .Sheets(i).Cells(5, 3) <> "" Then .Sheets(i).Rows("1:" & .Sheets(i).UsedRange.Rows.Count).Copy sh.Sheets(i).Cells(copyrow, 1) End If Next .Close False End With End If Dname = Dir Loop Application.ScreenUpdating = True MsgBox "OK!" End Sub

合并工作簿:将其他工作簿的全部表合并到本工作 Sub 合并工作簿() Dim FilesToOpen Dim x As Integer On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No Files were selected" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Workbooks.Open Filename:=FilesToOpen(x) Sheets().Move After:=ThisWorkbook.Sheets _ (ThisWorkbook.Sheets.Count) x = x + 1 Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub Sub 合并工作表() For Each st In Worksheets If https://www.wendangku.net/doc/6b14787263.html, <> https://www.wendangku.net/doc/6b14787263.html, Then https://www.wendangku.net/doc/6b14787263.html,edRange.Offset(1, 0).Copy [a65536].End(xlUp).Offset(1, 0) 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")

EXCEL VBA常用代码集

EXCEL VBA常用代码集 1.显示活动工作簿名称 MsgBox "当前活动工作簿是" & https://www.wendangku.net/doc/6b14787263.html, 2.保存活动工作簿 Activeworkbook.Save 3.保存所有打开的工作簿关闭EXCEL For Each W in Application.Workbooks W.Save Next W Application.Quit 4.将网格线设置为蓝色 ActiveWindow.GridlineColorIndex = 5 5.将工作表sheet1隐藏 Sheet1.Visible = xlSheetV eryHidden 6.将工作表Shtte1显示 Sheet1.Visible = xlSheetVisible 7.单击某单元格,该单元格所在的行以蓝色背景填充,字体颜色为白色 Private Sub Worksheet_SelectionChange(ByV al Target As Excel.Range) If Target.Row >= 2 Then’第二行以下的区域 On Error Resume Next [ChangColor_With1].FormatConditions.Delete https://www.wendangku.net/doc/6b14787263.html, = "ChangColor_With1" With [ChangColor_With1].FormatConditions .Delete .Add xlExpression, , "TRUE" .Item(1).Interior.ColorIndex = 5 .Item(1).Font.ColorIndex = 2 End With End If End Sub 8.使窗体在启动的时候自动最大化 Private Sub UserForm_Initialize() Application.WindowState = xlMaximized With Application Me.Top = .Top Me.Left = .Left Me.Height = .Height Me.Width = .Width End With End Sub 9.不保存工作簿退出EXCEL Application.DisplayAlerts = False Application.Quit

Excel 宏编程的常用代码

Excel 宏编程的常用代码 用过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、V ariant、用户定义类型或对象类型。 强制声明变量 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

VBA常用代码

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'当前单元格向上移动一格

ExcelVBA常用代码总结1

Excel VBA常用代码总结1 ?改变背景色 Range("A1").Interior.ColorIndex = xlNone ColorIndex一览 ?改变文字颜色 Range("A1").Font.ColorIndex = 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") NewSheet.Select ?选中或激活某单元格 '“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.Path '路徑 https://www.wendangku.net/doc/6b14787263.html, '名稱 ActiveWorkbook.FullName '路徑+名稱 '或将ActiveWorkbook换成thisworkbook ?隐藏文档 Application.Visible = False ?禁止屏幕更新 Application.ScreenUpdating = False ?禁止显示提示和警告消息 Application.DisplayAlerts = False ?文件夹做成 strPath = "C:\temp\" MkDir strPath ?状态栏文字表示 Application.StatusBar = "计算中" ?双击单元格容变换 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If (Target.Cells.Row >= 5And Target.Cells.Row <= 8) Then If Target.Cells.Value = "●"Then Target.Cells.Value = "" Else Target.Cells.Value = "●" End If Cancel = True End If End Sub ?文件夹选择框方法1 Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.BrowseForFolder(0, "文件", 0, 0) If Not objFolder Is Nothing Then path= objFolder.self.Path & "\" end if

相关文档