WD1X.COM - 问答一下,轻松解决,电脑应用解决专家
主板显卡CPU内存显示器
硬盘维修显卡维修显示器维修
注册表系统命令DOS命令Win8
存储光存储鼠标键盘
内存维修打印机维修
WinXPWin7Win11Linux
硬件综合机箱电源散热器手机数码
主板维修CPU维修键盘鼠标维修
Word教程Excel教程PowerPointWPS
网络工具系统工具图像工具
数据库javascript服务器
PHP教程CSS教程XML教程

各种Excel VBA命令大全(6)

更新时间:2012-03-19 18:00 作者:佚名点击:


断式,假如 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

都是非常有用的,所以一定要了解。
简单的说,前者是你鼠标移动到那个单元格,就触发那个事件的执行。後者是要等到

你点选的单元格,数?有了改变才会触发事件的执行。二者执行的时机一前一後。
Target "" 是代表限定当前的单元格要是有数?的,才会执行以下三行的程序。
Cells(iRow, iCol + 1) = Cells(iRow, iCol) * 2,是你在 B 栏输入数?时,C

栏将可得到 B 栏二倍的数?。
Target = "" 是限定当前的单元格要是没有数?的,才会执行以下一行的程序。
Cells(iRow, iCol + 1) = "",是把 C 栏的数?清成空格。
Application.EnableEvents = False与Application.EnableEvents = True,这是

个成双的程序,当你用了前者记得在执行其他程序後要写上後面的程序。它的目的在

抑制事件连锁执行。简单的说就是,在 B 字段所触发的事件,不愿在其它单元格再

触发另一个Worksheet_Change()事件。

VBALesson 9 程序说明∶体会一下Worksheet_Change()事件连锁反应。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim iRow As Integer
iRow = Target.Row
Application.EnableEvents = False
Cells(iRow, 3) = Cells(iRow, 3) + Cells(iRow, 2)
Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim iRow As Integer
iRow = Target.Row
'Application.EnableEvents = False
Cells(iRow, 3) = Cells(iRow, 3) + Cells(iRow, 2)
'Application.EnableEvents = True
End Sub

这个程序的目的是要在 B2 输入新的数?时,C2 会将 B2 输入的新数?加上 C2 原

有的数?呈现在 C2 上。
照上面有加上 Application.EnableEvents = False 程序执行当然没问题。
现在你在 Application.EnableEvents = False 与 Application.EnableEvents =

True 前加上「 '」看看。
程序前加上「 '」的目的是要使「 '」之后的文字变成说明文字,程序执行时是会跳

过说明文字,不执行说明文字的内容。
程序前加上「 '」符号后,文字会变成绿色。
执行第二个程序时,你将发现 C2 不会按你所要求的,呈现结果。
这就是所谓的事件连锁反应。

请问这个宏该如何写!
我想运行一个宏,就能在当前工作表B3上填上一条公式;这条公式的结果是所有工作
表上的B4单元格的和.请问这个宏该如何写.谢谢!
Sub gg()
Dim sh As Worksheet, shname$
For Each sh In Worksheets
shname = sh.Name
ActiveSheet.Range("b3").value = ActiveSheet.Range("b3").value +
顶一下
(3)
100%
踩一下
(0)
0%
------分隔线----------------------------
你可能感兴趣的内容