乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > Excel常用宏技巧八-excel宏教程

Excel常用宏技巧八-excel宏教程

作者:乔山办公网日期:

返回目录:excel表格制作

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

Public Sub Selection1()

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

End Sub

2、 几种如何把别的工作表 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

3、 你点选任何单元格,按 Selection 按钮,则所点选的单元格均会被输入 Shee4 工作表单元格 F1 数据

Public Sub Selection1()

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

End Sub

4、 如何利用 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

5、 如何利用 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,其它单元格则不被输入数据

6、 比较 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 一样了

7、 完整的 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 将是永远无法执行到的程序

8、 我们为什麽要用变数

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

9、 体会一下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()事件

10、 体会一下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 不会按你所要求的,呈现结果

这就是所谓的事件连锁反应

相关阅读

关键词不能为空
极力推荐
  • Excel常用函数用法-excel常用函数

  • excel常用函数,Word,PPT,Excel这三个Office软件是职场办公里最常用的三个软件,但是我发现简书上写PPT的教程多,Excel的少,即使有,也是零零散散。因为Excel的系统庞大其实你如果耐心钻

ppt怎么做_excel表格制作_office365_word文档_365办公网