当前位置:首页 > 电脑技术 > 正文内容

各种Excel VBA的命令

wzccxx2年前 (2024-04-15)电脑技术923

本示例为设置密码窗口 (1)

If Application.InputBox("请输入密码:") = 1234 Then

[A1] = 1 '密码正确时执行

Else: MsgBox "密码错误,即将退出!" '此行与第2行共同设置密码

End If


本示例为设置密码窗口 (1)

X = MsgBox("是否真的要结帐?", vbYesNo)

If X = vbYes Then

Close


本示例为设置工作表密码

ActiveSheet.Protect Password:=641112 ' 保护工作表并设置密码

ActiveSheet.Unprotect Password:=641112 '撤消工作表保护并取消密码


'本示例关闭除正在运行本示例的工作簿以外的其他所有工作簿,并保存其更改内容


For Each w In Workbooks

If w.Name ThisWorkbook.Name Then

w.Close SaveChanges:=True

End If

Next w


'每次打开工作簿时,本示例都最大化 Microsoft Excel 窗口。

Application.WindowState = xlMaximized


'本示例显示活动工作表的名称。

MsgBox "The name of the active sheet is " & ActiveSheet.Name


'本示例保存当前活动工作簿的副本。

ActiveWorkbook.SaveCopyAs "C:/TEMP/XXXX.XLS"


'下述过程激活工作簿中的第四张工作表。

Sheets(4).Activate



'下述过程激活工作簿中的第1张工作表。

Worksheets(1).Activate


'本示例通过将 Saved 属性设为 True 来关闭包含本段代码的工作簿,并放弃对该


工作簿的任何更改。

ThisWorkbook.Saved = True

ThisWorkbook.Close


'本示例对自动重新计算功能进行设置,使 Microsoft Excel 不对第一张工作表自


动进行重新计算。

Worksheets(1).EnableCalculation = False


'下述过程打开 C 盘上名为 MyFolder 的文件夹中的 MyBook.xls 工作簿。

Workbooks.Open ("C:/MyFolder/MyBook.xls")


'本示例显示活动工作簿中工作表 sheet1 上单元格 A1 中的值。

MsgBox Worksheets("Sheet1").Range("A1").Value


本示例显示活动工作簿中每个工作表的名称

For Each ws In Worksheets

MsgBox ws.Name

Next ws


本示例向活动工作簿添加新工作表 , 并设置该工作表的名称?

Set NewSheet = Worksheets.Add

NewSheet.Name = "current Budget"


本示例将新建的工作表移到工作簿的末尾

'Private Sub Workbook_NewSheet(ByVal Sh As Object)

Sh.Move After:=Sheets(Sheets.Count)

End Sub


本示例将新建工作表移到工作簿的末尾

'Private Sub App_WorkbookNewSheet(ByVal Wb As Workbook, _

ByVal Sh As Object)

Sh.Move After:=Wb.Sheets(Wb.Sheets.Count)

End Sub


本示例新建一张工作表,然后在第一列中列出活动工作簿中的所有工作表的名称。

Set NewSheet = Sheets.Add(Type:=xlWorksheet)

For i = 1 To Sheets.Count

NewSheet.Cells(i, 1).Value = Sheets(i).Name

Next i


本示例将第十行移到窗口的最上面?

Worksheets("Sheet1").Activate

ActiveWindow.ScrollRow = 10


当计算工作簿中的任何工作表时,本示例对第一张工作表的 A1:A100 区域进行排序


'Private Sub Workbook_SheetCalculate(ByVal Sh As Object)

With Worksheets(1)

.Range("a1:a100").Sort Key1:=.Range("a1")

End With

End Sub

本示例显示工作表 Sheet1 的打印预览。

Worksheets("Sheet1").PrintPreview


本示例保存当前活动工作簿?

ActiveWorkbook.Save


本示例保存所有打开的工作簿,然后关闭 Microsoft Excel。

For Each w In Application.Workbooks

w.Save

Next w

Application.Quit


下例在活动工作簿的第一张工作表前面添加两张新的工作表?

Worksheets.Add Count:=2, Before:=Sheets(1)


本示例设置 15 秒后运行 my_Procedure 过程,从现在开始计时。

Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"


本示例设置 my_Procedure 在下午 5 点开始运行。

Application.OnTime TimeValue("17:00:00"), "my_Procedure"


本示例撤消前一个示例对 OnTime 的设置。

Application.OnTime EarliestTime:=TimeValue("17:00:00"), _

Procedure:="my_Procedure", Schedule:=False


每当工作表重新计算时,本示例就调整 A 列到 F 列的宽度。

'Private Sub Worksheet_Calculate()

Columns("A:F").AutoFit

End Sub


本示例使活动工作簿中的计算仅使用显示的数字精度。

ActiveWorkbook.PrecisionAsDisplayed = True


本示例将工作表 Sheet1 上的 A1:G37 区域剪下,并放入剪贴板。

Worksheets("Sheet1").Range("A1:G37").Cut


Calculate 方法

计算所有打开的工作簿、工作簿中的一张特定的工作表或者工作表中指定区域的单元


格,如下表所示:

'要计算 '依照本示例

所有打开的工作簿 ' Application.Calculate (或只是 Calculate


指定工作表 '计算指定工作表Sheet1 Worksheets


("Sheet1").Calculate

指定区域 'Worksheets(1).Rows(2).Calculate


本示例对自动重新计算功能进行设置,使 Microsoft Excel 不对第一张工作表自动


进行重新计算。

Worksheets(1).EnableCalculation = False


本示例计算 Sheet1 已用区域中 A 列、B 列和 C 列的公式。

Worksheets("Sheet1").UsedRange.Columns("A:C").Calculate


本示例更新当前活动工作簿中的所有链接?

ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources


本示例设置第一张工作表的滚动区域?

Worksheets(1).ScrollArea = "a1:f10"


本示例新建一个工作簿,提示用户输入文件名,然后保存该工作簿。

Set NewBook = Workbooks.Add

Do

fName = Application.GetSaveAsFilename

Loop Until fName False

NewBook.SaveAs Filename:=fName


本示例打开 Analysis.xls 工作簿,然后运行 Auto_Open 宏。

Workbooks.Open "ANALYSIS.XLS"

ActiveWorkbook.RunAutoMacros xlAutoOpen


本示例对活动工作簿运行 Auto_Close 宏,然后关闭该工作簿。

With ActiveWorkbook

.RunAutoMacros xlAutoClose

.Close

End With


在本示例中,Microsoft Excel 向用户显示活动工作簿的路径和文件名称。

'Sub UseCanonical()

Display the full path to user.

MsgBox ActiveWorkbook.FullNameURLEncoded

End Sub


本示例显示当前工作簿的路径及文件名(假定尚未保存此工作簿)。

MsgBox ActiveWorkbook.FullName


本示例关闭 Book1.xls,并放弃所有对此工作簿的更改。

Workbooks("BOOK1.XLS").Close SaveChanges:=False


本示例关闭所有打开的工作簿。如果某个打开的工作簿有改变,Microsoft Excel


将显示询问是否保存更改的对话框和相应提示。

Workbooks.Close


本示例在打印之前对当前活动工作簿的所有工作表重新计算?

'Private Sub Workbook_BeforePrint(Cancel As Boolean)

For Each wk In Worksheets

wk.Calculate

Next

End Sub


本示例对查询表一中的第一列数据进行汇总,并在数据区域下方显示第一列数据的总


和。

Set c1 = Sheets("sheet1").QueryTables(1).ResultRange.Columns(1)

c1.Name = "Column1"

c1.End(xlDown).Offset(2, 0).Formula = "=sum(Column1)"


本示例取消活动工作簿中的所有更改?

ActiveWorkbook.RejectAllChanges


本示例在商业问题中使用规划求解函数,以使总利润达到最大值。SolverSave 函数


将当前问题保存到活动工作表上的某一区域。

Worksheets("Sheet1").Activate

SolverReset

SolverOptions Precision:=0.001

SolverOK SetCell:=Range("TotalProfit"), _

MaxMinVal:=1, _

ByChange:=Range("C4:E6")

SolverAdd CellRef:=Range("F4:F6"), _

Relation:=1, _

FormulaText:=100

SolverAdd CellRef:=Range("C4:E6"), _

Relation:=3, _

FormulaText:=0

SolverAdd CellRef:=Range("C4:E6"), _

Relation:=4

SolverSolve UserFinish:=False

SolverSave SaveArea:=Range("A33")


本示例隐藏 Chart1、Chart3 和 Chart5。

Charts(Array("Chart1", "Chart3", "Chart5")).Visible = False


当激活工作表时,本示例对 A1:A10 区域进行排序。

'Private Sub Worksheet_Activate()

Range("a1:a10").Sort Key1:=Range("a1"), order:=xlAscending

End Sub


本示例更改 Microsoft Excel 链接。

ActiveWorkbook.ChangeLink "c:/excel/book1.xls", _

"c:/excel/book2.xls", xlExcelLinks


本示例启用受保护的工作表上的自动筛选箭头?

ActiveSheet.EnableAutoFilter = True

ActiveSheet.Protect contents:=True, userInterfaceOnly:=True


本示例将活动工作簿设为只读?

ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly


本示例使共享工作簿每三分钟自动更新一次?

ActiveWorkbook.AutoUpdateFrequency = 3


下述 Sub 过程清除活动工作簿中 Sheet1 上的所有单元格的内容。

'Sub ClearSheet()

Worksheets("Sheet1").Cells.ClearContents

End Sub


本示例对所有工作簿都关闭滚动条?

Application.DisplayScrollBars = False


如果具有密码保护的工作簿的文件属性没有加密,则本示例设置指定工作簿的密码加


密选项。

'Sub SetPasswordOptions()

With ActiveWorkbook

If .PasswordEncryptionProvider "Microsoft RSA SChannel


Cryptographic Provider" Then

.SetPasswordEncryptionOptions _

PasswordEncryptionProvider:="Microsoft RSA SChannel


Cryptographic Provider", _

PasswordEncryptionAlgorithm:="RC4", _

PasswordEncryptionKeyLength:=56, _

PasswordEncryptionFileProperties:=True

End If

End With

End Sub


在本示例中,如果活动工作簿不能进行写保护,那么 Microsoft Excel 设置字符串


密码以作为活动工作簿的写密码。

'Sub UseWritePassword()

Dim strPassword As String

strPassword = "secret"

' Set password to a string if allowed.

If ActiveWorkbook.WriteReserved = False Then

ActiveWorkbook.WritePassword = strPassword

End If

End Sub


在本示例中,Microsoft Excel 打开名为 Password.xls 的工作簿,设置它的密码


,然后关闭该工作簿。本示例假定名为 Password.xls 的文件位于 C:/ 驱动器上。

'Sub UsePassword()


Dim wkbOne As Workbook


Set wkbOne = Application.Workbooks.Open("C:/Password.xls")


wkbOne.Password = "secret"

wkbOne.Close

'注意 Password 属性可读并返回 “********”。

End Sub


本示例将 Book1.xls 的当前窗口更改为显示公式。

Workbooks("BOOK1.XLS").Worksheets("Sheet1").Activate

ActiveWindow.DisplayFormulas = True


'本示例接受活动工作簿中的所有更改?

ActiveWorkbook.AcceptAllChanges


本示例显示活动工作簿的路径和名称

Sub UseCanonical()

MsgBox '消息框

[b7] = ActiveWorkbook.FullName '当前工作簿

[b8] = ActiveWorkbook.FullNameURLEncoded '活动工作簿

End Sub


本示例显示 Microsoft Excel 启动文件夹的完整路径。

MsgBox Application.StartupPath


本示例显示活动工作簿中每个工作表的名称。

For Each ws In Worksheets

MsgBox ws.Name

Next ws


本示例关闭除正在运行本示例的工作簿以外的其他所有工作簿,并保存其更改内容。

For Each w In Workbooks

If w.Name ThisWorkbook.Name Then

w.Close savechanges:=True

End If

Next w


Activate 事件

激活一个工作簿、工作表、图表或嵌入图表时产生此事件。

当激活工作表时,本示例对 A1:A10 区域进行排序。

Private Sub Worksheet_Activate()

Range("a1:a10").Sort Key1:=Range("a1"), order:=xlAscending

End Sub


Calculate 事件

对于 Worksheet 对象,在对工作表进行重新计算之后产生此事件

每当工作表重新计算时,本示例就调整 A 列到 F 列的宽度。

Private Sub Worksheet_Calculate()

Columns("A:F").AutoFit

End Sub


BeforeDoubleClick 事件

应用于 Worksheet 对象的 Activate 方法。

当双击某工作表时产生此事件,此事件先于默认的双击操作。

Private Sub e-xpression_BeforeDoubleClick(ByVal Target As Range, Cancel


As Boolean)

e-xpression 引用在类模块中带有事件声明的 Worksheet 类型对象的变量。

Target 必需。双击发生时最靠近鼠标指针的单元格。

Cancel 可选。当事件发生时为 False。如果事件过程将该参数设为 True,则该


过程执行完之后将不进行默认的双击操作。


BeforeRightClick 事件

应用于 Worksheet 对象的 Activate 方法。

当用鼠标右键单击某工作表时产生此事件,此事件先于默认的右键单击操作。

Private Sub e-xpression_BeforeRightClick(ByVal Target As Range, Cancel


As Boolean)

e-xpression 引用在类模块中带有事件声明的 Worksheet 类型对象的变量。

Target 必需。右键单击发生时最靠近鼠标指针的单元格。

Cancel 可选。当事件发生时为 False。如果该事件过程将本参数设为 True,则


该过程执行结束之后不进行默认的右键单击操作。


Change 事件

当用户更改工作表中的单元格,或外部链接引起单元格的更改时产生此事件。

Private Sub Worksheet_Change(ByVal Target As Range)

Target 更改的区域。可以是多个单元格。

说明

重新计算引起的单元格更改不触发本事件。可使用 Calculate 事件俘获工作表重新


计算操作。

本示例将更改的单元格的颜色设为蓝色。

Private Sub Worksheet_Change(ByVal Target as Range)

Target.Font.ColorIndex = 5

End Sub


Deactivate 事件

图表、工作表或工作簿从活动状态转为非活动状态时产生此事件。

Private Sub object_Deactivate()

object Chart、Workbook 或者 Worksheet。有关对 Chart 对象使用事件的详细


信息,请参阅 Chart 对象事件的用法。

本示例当工作簿转为非活动状态时,对所有打开的窗口进行排列。

Private Sub Workbook_Deactivate()

Application.Windows.Arrange xlArrange

End Sub


FollowHyperlink 事件

当单击工作表上的任意超链接时,发生此事件。对于应用程序级或工作簿级的事件,


请参阅 SheetFollowHyperlink 事件。

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

Target Hyperlink 类型,必需。一个代表超链接目标位置的 Hyperlink 对象。

本示例对在当前活动工作簿中访问过的所有链接保留一个列表或历史记录。

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

With UserForm1

.ListBox1.AddItem Target.Address

.Show

End With

End Sub


PivotTableUpdate 事件

发生在工作簿中的数据透视表更新之后。

Private Sub e-xpression_PivotTableUpdate(ByVal Target As PivotTable)

e-xpression 引用在类模块中带有事件声明的 Worksheet 类型对象的变量。

Target 必需。选定的数据透视表。

本示例显示一则消息,说明数据透视表已经更新。本示例假定您已在类模块中声明了


带有事件的 Worksheet 类型的对象。

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

MsgBox "The PivotTable connection has been updated."

End Sub


SelectionChange 事件

当工作表上的选定区域发生改变时,将产生本事件。

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

Target 新选定的区域。

本示例滚动工作簿窗口,直至选定区域位于窗口的左上角。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

With ActiveWindow

.ScrollRow = Target.Row

.ScrollColumn = Target.Column

End With

End Sub


本示例显示活动工作簿中工作表 sheet1 上单元格 A1 中的值。

MsgBox Worksheets("Sheet1").Range("A1").Value


本示例显示活动工作簿中每个工作表的名称。

For Each ws In Worksheets

MsgBox ws.Name

Next ws


本示例向活动工作簿添加新工作表,并设置该工作表的名称。

Set newSheet = Worksheets.Add

newSheet.Name = "current Budget"


本示例关闭工作簿 Book1.xls,但不提示用户保存所作更改。Book1.xls 中的所有


更改都不会保存。

Application.DisplayAlerts = False

Workbooks("BOOK1.XLS").Close

Application.DisplayAlerts = True


本示例设置保存文件时显示提示,要求用户输入汇总信息。

Application.PromptForSummaryInfo = True


本示例显示 Microsoft Excel 的完整路径。

Private Sub aa()

MsgBox "The path is " & Application.Path

End Sub


示例显示每一个可用加载宏的路径及文件名。

For Each a In AddIns

MsgBox a.FullName

Next a


ChDir 语句

改变当前的目录或文件夹。

ChDir path

在 Power Macintosh 中,默认驱动器总是改为在 path 语句中指定的驱动器。完整


路径指定由卷标名开始,相对路径由冒号 ( 开始. ChDir 可以辨认路径中指定的


别名:

ChDir "MacDrive:Tmp" ' 在 Macintosh 中


本示例显示当前路径分隔符。

MsgBox "The path separator character is " & _

Application.PathSeparator


Move 方法

将一个指定的文件或文件夹从一个地方移动到另一个地方。

语法

object.Move destination

Move 方法语法有如下几部分:

部分 描述

object 必需的。始终是一个 File 或 Folder 对象的名字。

destination 必需的。文件或文件夹要移动到的目标。不允许有通配符。


CreateFolder 方法

创建一个文件夹。

语法

object.CreateFolder(foldername)

reateFolder 方法有如下几部分:

部分 描述

object 必需的。始终是一个 FileSystemObject 的名字。

foldername 必需的。字符串表达式,它标识创建的文件夹。


本示例使用 MkDir 语句来创建目录或文件夹。如果没有指定驱动器,新目录或文件


夹将会建在当前驱动器中。

MkDir "MYDIR" ' 建立新的目录或文件夹。


Name 语句示例

本示例使用 Name 语句来更改文件的名称。示例中假设所有使用到的目录或文件夹都


已存在。 在 Macintosh 中,默认驱动器名称是 “HD” 并且路径部分由冒号取代


反斜线隔开。

Dim OldName, NewName

OldName = "OLDFILE": NewName = "NEWFILE" ' 定义文件名。

Name OldName As NewName ' 更改文件名。

OldName = "C:/MYDIR/OLDFILE": NewName = "C:/YOURDIR/NEWFILE"

Name OldName As NewName ' 更改文件名,并移动文件。


本示例显示当前默认文件路径。

MsgBox "The current default file path is " & _

Application.DefaultFilePath


本示例设置替换启动文件夹。

Application.AltStartupPath = "C:/EXCEL/MACROS"


FolderExists 方法

如果指定的文件夹存在返回 True,不存在返回 False。

语法

object.FolderExists(folderspec)


本示例在单元格中启用编辑。

Application.EditDirectlyInCell = True


程序说明:

几种用VBA在单元格输入数据的方法:

Public Sub Writes()

1-- 2 方法,最简单在 "[ ]" 中输入单元格名称。

1 [A1] = 100 '在 A1 单元格输入100。

2 [A2:A4] = 10 '在 A2:A4 单元格输入10。

3-- 4 方法,采用 Range(" "), " " 中输入单元格名称。

3 Range("B1") = 200 '在 B1 单元格输入200。

4 Range("C1:C3") = 300 '在 C1:C3 单元格输入300。

5-- 6 方法,采用 Cells(Row,Column),Row是单元格行数,Column是单元格栏数。

5 Cells(1, 4) = 400 '在 D1 单元格输入400。

6 Range(Cells(1, 5), Cells(5, 5)) = 50 '在 E1:E 5单元格输入50。

End Sub


你点选任何单元格,按 Selection 按钮,則则所点选的单元格均会被输入文字


"Test"。

Public Sub Selection1()

Selection.Value = "Test" '在任何你点选的单元格输入文字 "Test"。

End Sub


VBALesson2 程序说明:

几种如何把别的工作表 Sheet4 数据,读到这个工作表的方法:在被读取的单元格


前加上工作表名称 Sheet4。

Public Sub Writes()

1-- 2 方法,最简单在被读取的 "[ ]" 前加上被读取的工作表名称 Sheet4。

1 [A1] = Sheet4.[A1] '把Sheet4 A1 单元格的数据,读到 A1单元格。

2 [A2:A4] = Sheet4.[B1] ''把 Shee4 工作表单元格 B1 数据,读到 A2:A4


单元格。

3-- 4 方法,在被读取的工作表 Range(" ")的 Range 前加上被读取的工作表名称


Sheet4。

3 Range("B1") = Sheet4.Range("B1") ''把 Shee4工作表单元格 B1 数据,读


到 B1 单元格。

4 Range("C1:C3") = Sheet4.Range("C1") '把 Shee4 工作表单元格 C1 数据


,读到 C1:C3 单元格。

5-- 6 方法,在被读取的工作表 Cells(Row,Column),Cells 前加上被读取工作表


名称 Sheet4。

5 Cells(1, 4) = Sheet4.Cells(1, 4) '把 Shee4 工作表单元格 D1 数据,读


到 D1 单元格。

6 Range(Cells(1, 5), Cells(5, 5)) = Sheet4.Cells(1, 5) '把 Shee4 工


作表单元格 E1 数据,读到 E1:E 5单元格。

End Sub


你点选任何单元格,按 Selection 按钮,则所点选的单元格均会被输入 Shee4 工


作表单元格 F1 数据。

Public Sub Selection1()

Selection.Value = Sheet4.[F1] '把 Shee4 工作表单元格 F1 数据,读到任


何你点选的单元格。

End Sub


VBALesson3 程序说明:

如何利用 Worksheet_SelectionChange 输入数据的方法。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Target = 100

End Sub


Target 指的是你鼠标所选的单元格,Worksheet_SelectionChange() 事件的参数


可以是一个也可以是好几个单元格。

Range 是 Excel 特有的变量形态,叫范围。

Target As Rang 是把 Target 这个参数设定为 Range 变量形态。

Target = 100 是把你点选的单元格输入数字100。


VBALesson4 程序说明:

如何利用 Worksheet_SelectionChange 在限定的单元格输入数据的方法。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Row >= 2 And Target.Column = 2 Then

Target = 100

End If

End Sub


If ... Then ... End If 这是我们学的这一个逻辑判断语句。

Target.Row >= 2,指的是鼠标选定的单元格的行大于或等于 2。

Target.Column = 2 ,指的是鼠标选定的单元格的栏等于 2。

If Target.Row >= 2 And Target.Column = 2 Then 指的是只有在Target.Row >=


2及Target.Column = 2二个条件成立时。

就是 (Target.Row >= 2) 为True及(Target.Column = 2)为True时,才执行下面的


程序 Target=100,

也就是 B 栏第二行及以下行用鼠标被点选时,才会被输入100,其它单元格则不被输


入数据。


VBALesson5 程序说明:

比较 Worksheet_SelectionChange() 与用按钮 CommandButton1_Click() 来执行


程序二者的方法与写法有何不同。

Worksheet_SelectionChange()事件

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Row >= 2 And Target.Column = 2 Then

Target = 100

End If

End Sub


按鈕 CommandButton1_Click()

Private Sub CommandButton1_Click()

If ActiveCell.Row >= 2 And ActiveCell.Column >= 3 Then

ActiveCell = 100

End If

End Sub


二者执行方法最大的地方,在于 Worksheet_SelectionChange() 是自动的,你不用


了解他是怎么完成工作的。

按钮 CommandButton1_Click() 是人工的,比 SelectionChange()多一道手续,


就是要去按那接钮,程序才会执行。

SelectionChange() 有一个参数 Target 可用;CommandButton1_Click ()没有。

所以我们要用 ActiveCell 内定函数来取代Target,ActiveCell 与 Target最大的


不同点他只能指定一个单元格。

就是你选取多个单元格也只有最上面的单元格会加上数据;用 Selection 取代


ActiveCell, 用法就跟 Target 一样了。


VBALesson 6 程序说明:

完整的 If...Then ┅ End 逻辑判断式。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Row >= 2 And Target.Column = 2 Then

Target = 200

ElseIf Target.Row >= 2 And Target.Column = 3 Then

Target = 300

ElseIf Target.Row >= 2 And Target.Column = 2 Then

Target = 400

Else

Target = 500

End If

End Sub


这是个完整的 If 逻辑判断式,意思是说,假如 If 後的判断式条件成立的话,就


执行第二条程序,否则假如 ElseIf 後的判断式条件成立的话,就执行第四条程序


,否则假如另一个 ElseIf 後的判断式条件成立的话,就执行第六条程序。

Else 的意思是说,假如以上条件都不成立的话,就执行第八条程序。

他的执行方式是假如 IF 的条件成立的话,就不执行其它ElseIf 及Else 的逻辑判


断式,假如 If 後的条件不成立的话才会执行 ElseIf 或 Else 逻辑判断式。第二


个 ElseIf後的条件因为与 IF 後的条件一样,所以这个判断式後面的 Target=400


将是永远无法执行到的程序。


VBALesson 7 程序说明∶我们为什麽要用变数。


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim i , j As Integer

Dim k As Range

i = Target.Row

j = Target.Column

Set k = Target

If i >= 2 And j = 2 Then

k = 200

ElseIf i >= 2 And j = 3 Then

k = 300

ElseIf i >= 2 And j = 4 Then

k = 400

Else

k = 500

End If

End Sub


跟VBALesson 6比较,程序是不是明朗多了,在前课重复的用 Target.Row,


Target.Column及Target来写程序是不是有一点烦。用变量的第一个好处大家马上感


觉得出来,就是可以简化程序。

使用变量前,你得先宣告变量。宣告变量的方法是在 "Dim " 后面写上变量 " i


" As 后面接上变量的形态 "Integer"。

Dim i , j As Integer 就是宣告 i 与 j 为整数变量,这是同时宣告二个变量


i 与 j 所以要在二个变量间加个 " , "号。

Dim k As Range 是宣告 k 为范围资料形态,Range这是 Excel 特有的资料形态


i = Target.Row是把当前单元格的行数,指定给变量 i。

j = Target.Column 是把当前单元格的栏数,指定给变量 j。

Set k = Target 是把当前的单元格,指定给变量 k。

用像 i 与 j 这样简单的变量,在程序的前面你可能还记得 i 或 j 代表着


什厶。程序写长了,你可能忘记 i 或 j 代表着什厶。所以最好的方法是用比较有


意义的代号,来为变量命名如 iRow 或 iCol 来取代 i 及 j 。


VBALesson 8 程序说明∶体会一下Worksheet_Change()事件。


Private Sub Worksheet_Change(ByVal Target As Range)

Dim iRow, iCol As Integer

iRow = Target.Row

iCol = Target.Column

If iRow >= 2 And iCol = 2 And Target "" Then

Application.EnableEvents = False

Cells(iRow, iCol + 1) = Cells(iRow, iCol) * 2

Application.EnableEvents = True

ElseIf iRow >= 2 And iCol = 2 And Target = "" Then

Cells(iRow, iCol + 1) = ""

Else

Cells(iRow, iCol + 1) = ""

End If

End Sub


前几个教程都是用Worksheet_SelectionChange 事件来举例子,大家应该能体会他


是怎厶一回事了吧。

这个教程就是要让你来体会什厶是Worksheet_Chang()事件。因为这二个事件在VBA


都是非常有用的,所以一定要了解。

简单的说,前者是你鼠标移动到那个单元格,就触发那个事件的执行。後者是要等到


你点选的单元格,数


扫描二维码推送至手机访问。

版权声明:本文由泰山森林发布,如需转载请注明出处。

本文链接:https://wzc.tzts.ltd/post/93.html

分享给朋友:

相关文章

远程桌面连接必须输入密码设置方式

gpedit.msc计算机配置——管理模板——windows组件——远程桌面服务——远程桌面会话主机——安全——必须输入密码...

win10取消开机密码、睡眠唤醒密码windows10

1. 取消开机密码按住win+R运行,输入netplwiz并确定:取消掉“要使用本计算机,用户必须输入用户名和密码”:2. 取消睡眠唤醒密码2.1 方法1:设置进入“设置-账户-登录选项”,修改“需要登陆”。但是一旦用户启用了Windows...

Teamviewer被限制,向日葵卡顿?试了windows自带远程桌面才知道之前都是舍近求远

Teamviewer被限制,向日葵卡顿?试了windows自带远程桌面才知道之前都是舍近求远

步骤1:我的电脑-属性-远程设置里勾选允许远程连接到此计算机。如果是局域网远程控制的话,在另外一台电脑里打开远程桌面输入需要被控制电脑的局域网ip地址就行。(不知道局域网ip?在控制面板网络和 Internet网络连接,网络适配器上右键看状...

FTP使用命令详解

假设有一目标FTP服务器,IP:123.123.123.123,用户名:ftpname 密码:ftppwd。当前要通过命令行将D:\ftpin目录下的file.doc上传到目标服务器,从服务器下载的步骤如下:1.“开始”-“运行”-输入“F...

 如何检查搬瓦工等VPS的IP是否被封

如何检查搬瓦工等VPS的IP是否被封

之前说了搬瓦工的IP被封是不可能退款的,但是很多时候其实IP没有被封,而是VPS出了点问题,比如没有启动成功,或者就是装完系统有点小问题。这时候其实IP是正常的,我们不需要担心。下面告诉大家如何检查自己的搬瓦工VPS的IP是否被封。文章目录...

修改远程桌面端口

计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp计算机\HKEY_LOCAL_MACHINE\SYSTEM\C...

评论列表

2K电影
6个月前 (10-28)

好无聊啊!https://www.2kdy.com

2K电影
6个月前 (11-02)

不错的帖子,值得收藏!https://www.2kdy.com

香蕉影院
6个月前 (11-03)

在这个版块混了这么久了,第一次看见这么给你的帖子!https://www.xjtv1.com

2K电影
6个月前 (11-09)

看帖、回帖、拿分、走人https://www.2kdy.com

365短剧
6个月前 (11-21)

我只是来赚积分的!https://www.365duanju.com

365短剧网
6个月前 (11-23)

好帖子!https://www.365duanju.com

心理设备厂家
6个月前 (11-24)

网页的加载速度非常快,不会影响用户体验。https://aptlawfirm.com/

2K电影
5个月前 (12-01)

赞一个!https://www.2kdy.com

2K影视
5个月前 (12-02)

论坛人气好旺!https://www.2kdy.com

ai实时换脸
4个月前 (12-30)

微信代付 TeleGram@odiodihttps://t.me/odiodi

quickq
4个月前 (01-06)

精华帖的节奏啊!https://www.quickq9.com

quickq下载
4个月前 (01-15)

我裤子脱了,纸都准备好了,你就给我看这个?https://www.quickq9.com

wps下载
2个月前 (03-04)

顶一个!https://org-wps.cn

helloworld官网下载
2个月前 (03-04)

雷锋做好事不留名,都写在帖子里!https://app-helloworlds.cn

谷歌浏览器
2个月前 (03-04)

很给力!https://d-google.com

wps下载
2个月前 (03-05)

楼主很有经验啊!https://im-wps.com.cn

快连VPN官网
2个月前 (03-05)

看了这么多帖子,第一次看到这么有深度了!https://www.kuailian-cn.it.com

有道翻译下载
2个月前 (03-05)

楼主看起来很有学问!https://youdao-pc.it.com

快连VPN官网
2个月前 (03-06)

顶顶更健康!https://www.kuailian-cn.it.com

wps
2个月前 (03-06)

顶一个!https://co-wps.it.com

快连VPN
2个月前 (03-06)

每次看到楼主的帖子都有惊吓!https://web-kuailian.it.com

helloworld
2个月前 (03-07)

我回帖楼主给加积分吗?https://www.me-helloworlds.com

谷歌浏览器
2个月前 (03-08)

勤奋灌水,天天向上!https://www.win-google.com.cn

helloworld
2个月前 (03-08)

看了这么多帖子,第一次看到这么高质量内容!https://cm-helloworld.com

快连VPN官网
2个月前 (03-08)

今天过得很不爽!https://www.kuailian-cn.it.com

谷歌浏览器下载
2个月前 (03-09)

这么经典的话只有楼主能想到!https://chrome-web.it.com

WPS
2个月前 (03-09)

楼主发几张靓照啊!https://p-wps.it.com

helloworld官网下载
2个月前 (03-09)

楼上的真不讲道理!https://www.on-helloworlds.com

有道翻译
2个月前 (03-10)

有内涵!https://fanyi-youdao.it.com

快连VPN官网
2个月前 (03-10)

灌水不是我的目的!https://www.kuailian-web.it.com

能量闪租
2个月前 (03-10)

usdt转账手续费 - 1.5 TRX=1次转账次数 直接节省80%!无视对方有没有U或者是否交易所- 复制地址【THXfhfV6ThhYzt7d8mm4KL3dE5LWBbwb3s】转 1.5 TRX即可0手续费转账!TG机器人:@jzzTRXbot

1.5trx转账
2个月前 (03-10)

TRX能量代理 - 1.5 TRX=1次转账次数 直接节省80%!无视对方有没有U或者是否交易所- 复制地址【THXfhfV6ThhYzt7d8mm4KL3dE5LWBbwb3s】转 1.5 TRX即可0手续费转账!TG机器人:@jzzTRXbot

节省TRX手续费
2个月前 (03-10)

如何能量租赁 - 1.5 TRX=1次转账次数 直接节省80%!无视对方有没有U或者是否交易所- 复制地址【THXfhfV6ThhYzt7d8mm4KL3dE5LWBbwb3s】转 1.5 TRX即可0手续费转账!TG机器人:@jzzTRXbot

谷歌浏览器
2个月前 (03-11)

祖国尚未统一,我却天天灌水,好内疚!https://www.d-google.com

有道翻译下载
2个月前 (03-12)

这个帖子好无聊啊!https://fanyi-youdao.it.com

便宜能量
2个月前 (03-12)

波场能量租赁 - 2 TRX=1次转账次数 直接节省80%!无视对方有没有U或者是否交易所,低于 2 TRX的都是钓鱼的骗子- 复制地址【TL43ajp2xRQ6xXr1gxyZv1yd6mSzMCUSXj】转 2 TRX即可0手续费转账!TG机器人: @jzzTRXbot 官网: https://jzztrx.com

波场转账节省手续费
2个月前 (03-12)

trx能量租赁 - 2 TRX=1次转账次数 直接节省80%!无视对方有没有U或者是否交易所,低于 2 TRX的都是钓鱼的骗子- 复制地址【TL43ajp2xRQ6xXr1gxyZv1yd6mSzMCUSXj】转 2 TRX即可0手续费转账!TG机器人: @jzzTRXbot 官网: https://jzztrx.com

能量闪租
2个月前 (03-12)

2TRX能量租赁 - 2 TRX=1次转账次数 直接节省80%!无视对方有没有U或者是否交易所,低于 2 TRX的都是钓鱼的骗子- 复制地址【TL43ajp2xRQ6xXr1gxyZv1yd6mSzMCUSXj】转 2 TRX即可0手续费转账!TG机器人: @jzzTRXbot 官网: https://jzztrx.com

波场能量租赁
2个月前 (03-12)

trx租赁 - 2 TRX=1次转账次数 直接节省80%!无视对方有没有U或者是否交易所,低于 2 TRX的都是钓鱼的骗子- 复制地址【TL43ajp2xRQ6xXr1gxyZv1yd6mSzMCUSXj】转 2 TRX即可0手续费转账!TG机器人: @jzzTRXbot 官网: https://jzztrx.com

有道翻译官网
2个月前 (03-13)

这篇文章真是让人受益匪浅!https://fanyi-youdao.it.com

wps官网
2个月前 (03-13)

勤奋灌水,天天向上!https://www.pcs-wps.net

wps官网
2个月前 (03-14)

对牛弹琴的人越来越多了!https://www.web-wps.it.com

谷歌浏览器官网
2个月前 (03-14)

楼主好聪明啊!https://chrome-web.it.com

wps下载
2个月前 (03-14)

知识就是力量啊!https://co-wps.it.com

有道翻译官网
2个月前 (03-14)

楼主好聪明啊!https://fanyi-youdao.it.com

谷歌浏览器官网
2个月前 (03-15)

收藏了,以后可能会用到!https://d-google.com

wps下载
2个月前 (03-15)

写得实在太好了,我唯一能做的就是默默顶贴!https://cn-wps.it.com

有道翻译
2个月前 (03-16)

鉴定完毕!https://pc-youdao.it.com

wps官网下载
2个月前 (03-16)

我回帖楼主给加积分吗?https://cm-wps.cn

快连VPN官网
2个月前 (03-16)

经典,收藏了!https://www.kuailian-web.it.com

WPS
2个月前 (03-16)

楼主看起来很有学问!https://www.w-wps.it.com

wps官网
2个月前 (03-17)

怪事年年有,今年特别多!https://www.web-wps.cn

快连VPN下载
2个月前 (03-18)

不灌水就活不下去了啊!https://web-kuailian.it.com

helloworld官网下载
2个月前 (03-19)

楼上的心情不错啊!https://www.cc-helloworlds.it.com

helloworld下载
2个月前 (03-19)

这篇文章真是让人受益匪浅!https://vip-helloworld.it.com

WPS官网
2个月前 (03-20)

支持一个https://www.office-wps.it.com

快连VPN
2个月前 (03-20)

这么版块的帖子越来越有深度了!https://vpn-kuailian.it.com

helloworld
2个月前 (03-20)

楼主的等级很高啊!https://www.top-helloworld.it.com

有道翻译
2个月前 (03-21)

哥回复的不是帖子,是寂寞!https://www.zh-youdao.it.com

快连VPN下载
2个月前 (03-22)

好无聊啊!https://vpn-kuailian.it.com

谷歌浏览器官网
2个月前 (03-22)

精华帖的节奏啊!https://chrome-cn.it.com

有道翻译下载
2个月前 (03-22)

刚看见一个妹子,很漂亮!https://www.youdao-win.it.com

有道翻译在线
2个月前 (03-23)

语言表达流畅,没有冗余,读起来很舒服。https://i-youdao.com.cn

搜狗输入法
2个月前 (03-23)

看了这么多帖子,第一次看到这么经典的!https://im-sogou.com

有道翻译官网
2个月前 (03-24)

收藏了,改天让朋友看看!https://i-youdao.com.cn

搜狗官网
2个月前 (03-24)

收藏了,以后可能会用到!https://im-sogou.com

有道翻译
2个月前 (03-24)

看帖不回帖都是耍流氓!https://i-youdao.com.cn

有道翻译官网
2个月前 (03-25)

楼主的帖子提神醒脑啊!https://i-youdao.com.cn

wps下载
2个月前 (03-25)

好东西,学习学习!https://www-wps-cn.com

有道翻译下载
2个月前 (03-26)

不是惊喜,是惊吓!https://i-youdao.com.cn

wps下载
2个月前 (03-26)

楼主看起来很有学问!https://www-wps-cn.com

WPS
2个月前 (03-26)

视死如归的架势啊!https://www-wps-cn.com

搜狗输入法下载
2个月前 (03-27)

收藏了,怕楼主删了!https://im-sogou.com

helloworld下载
2个月前 (03-27)

楼上的很有激情啊!https://www.mac-helloworld.cn

有道翻译下载
1个月前 (03-28)

这里的资源非常丰富,帮助我解决了很多问题。https://i-youdao.com.cn

WPS
1个月前 (03-28)

楼主是一个神奇的青年!https://www-wps-cn.com

波场能量租赁
4周前 (04-11)

u地址转错网络咋办 【 TDN4M1tZdzqJpcTf3H8QKXtKjXFSRQNzb4 】转错请联系TG:@TrxEm

波场能量租赁
4周前 (04-12)

u转错地址怎么找回 【 TQkiPsgYkyK7YmdpTWzdaaDyCkVtiynhTX 】转错请联系TG:@TrxEm

trx能量租赁
4周前 (04-12)

u币转错地址交易失败 【 TA42UPAC35FTwtgTiG9WfEwF1sEoKn1cDa 】转错请联系TG:@TrxEm

trx能量租赁
4周前 (04-13)

转USDT转错 【 TVJb2xWwykCFf1zKX2SdaNfxzN1muaVHyq 】转错请联系TG:@TrxEm

trx能量租赁
4周前 (04-14)

u转错地址怎么找回 【 TLguqXkFmAzeSqS5ury8fcfMa8nyHbmFnu 】转错请联系TG:@TrxEm

波场能量租赁
4周前 (04-14)

u地址转错 【 TPE4CtoYt2CZfLWKm4SSMHJLZsPZpwzBsr 】转错请联系TG:@TrxEm

trx能量租赁
4周前 (04-14)

比特派u转错地址 【 TTAYdeH22gCnii2Fkhf7aYDThD9hTBBBBB 】转错请联系TG:@TrxEm

波场能量租赁
4周前 (04-15)

转u转错地址 【 TSe9YeCZqpgkDk8TfPwRFKhLXEftNfYNZ5 】转错请联系TG:@TrxEm

节省TRX手续费
4周前 (04-15)

usdt转错帐如何追回 【 TESi992m8ytf2HPzCB4kWtdCKKJe2xTZaW 】转错请联系TG:@TrxEm

trx能量租赁
4周前 (04-15)

trx能量转错 【 TXeyDL6vQihKvX8TaB7LxLsnwEn5BkUv3c 】转错请联系TG:@TrxEm

节省TRX手续费
4周前 (04-16)

u地址转错 【 TGqdaZyh9LNtsTxXaaSEKKeY9qyNFGUWyW 】转错请联系TG:@TrxEm

节省TRX手续费
3周前 (04-17)

u地址转错 【 TD1FycVdpQGcuiGycyMmLNwPcj37DLFjPZ 】转错请联系TG:@TrxEm

trx能量机器人
3周前 (04-17)

u地址转错 【 TXAXeNA48Zf4YJPpSZViVqhCkS6WKeppvv 】转错请联系TG:@TrxEm

节省TRX手续费
3周前 (04-19)

u地址转错 【 TSxjdW7XKRuCRkn8pBG8HbFKtuTAdnHMae 】转错请联系TG:@TrxEm

波场能量租赁
3周前 (04-19)

u地址转错 【 THdcxyQTDN5bysLss1NHHiateRMrGmVNT8 】转错请联系TG:@TrxEm

节省TRX手续费
3周前 (04-20)

u地址转错 【 TDDgk4wwCKynDP3qWVDu51uGRhV1111111 】转错请联系TG:@TrxEm

节省TRX手续费
3周前 (04-21)

u地址转错 【 TR5d8c2JrGFQwvvvvv6KacTAnWm9fQvaq2 】转错请联系TG:@TrxEm

节省TRX手续费
3周前 (04-21)

u地址转错 【 TJRMuxf9shbQu5hQiszDHmMxTWsYzfLN4b 】转错请联系TG:@TrxEm

节省TRX手续费
3周前 (04-21)

u地址转错 【 TAZFr3b2y2PhqCWL1MUd41yWUyn1D5AQYw 】转错请联系TG:@TrxEm

波场能量租赁
3周前 (04-22)

u地址转错 【 TCE97GvfzV5pWa99mnh3MhmPnyBSVJgbZf 】转错请联系TG:@TrxEm

节省TRX手续费
3周前 (04-22)

u地址转错 【 TAAPge2YCPM6cwD8ctc2qXas5CnLJughgj 】转错请联系TG:@TrxEm

trx能量机器人
3周前 (04-23)

u地址转错 【 TRDytCPU42SjpMHuMUB3aw9vfhck7kYKWq 】转错请联系TG:@TrxEm

trx能量租赁
2周前 (04-25)

u地址转错 【 TJJrWQkhHsuLpeiKgUv2UJtAPbzY8GSYZx 】转错请联系TG:@TrxEm

trx能量机器人
2周前 (04-25)

u地址转错 【 TQv3cZxx9HtKPdxrPGeK7rCtpS1FihJcTH 】转错请联系TG:@TrxEm

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。