首先說明,單從字面上來理解,target就是目標的意思,我們也可以這樣來理解,被選擇的對象,其實就是要操作的目標target。
一、target的應用范圍
target能在兩個地方出現,一是事件,二是VBA代碼中。
比如,Worksheet_SelectionChange(ByVal Target As Range) 這個事件中,就存在target對象,此用法為將單元格的范圍當作目標來處理。
在VBA中的target代碼,諸如:Target.Address(0, 0),就是這樣來使用。
二、target應用代碼范例
范例代碼一
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Union(Range("A1:A10"), Range("C1:C10"))) Is Nothing Then
MsgBox "你選擇了" & Target.Address(0, 0) & "單元格"
End If
End Sub
代碼解釋:
當選擇工作表A1到A10,C1到C10單元格時將所選的單元格地址顯示在消息框中。
第2行代碼使用Intersect方法判斷所選單元格是否與A1到A10,C1到C10單元格重疊,如果重疊說明所選單元格在A1到A10,C1到C10單元格區域內。Intersect方法返回一個Range對象,此對象代表兩個或多個范圍重疊的矩形區域,語法如下:
范例代碼二
使用單元格的Column屬性和Row屬性可以將觸發條件限制在某一區域內,如下面的代碼所示。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Row < 11 Then
Target.Offset(, 1) = Val(Target) * 3
End If
End Sub
復制代碼代碼解析:
當改變工作表的A1到A10單元格時,如果輸入的是數值則將在對應的B列單元格寫入乘以3的數值。
第2行代碼使用Column屬性將觸發條件限制在第1列,使用Row屬性將觸發條件限制在第10行以內,也就是A1到A10的區域范圍內。
范例代碼三
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
'這裡的Target就不是區域了,是超鏈接
End Sub
范例代碼四
if ((Target.Row=4)and (Target.Column=3)) then
Calendar1.Visible = True
Target.Column=3'表示選中單元格在第3列
Target.Row=4'表示選中單元格在第4行
再有,Target.Offset(0, 1)=4表示在選中單元格向右偏移1列位置賦值。