- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2024-11-14
|
luhpro大大真是高招小弟甘拜下風謝謝耐心指導小弟可否再問一題如下列
Private Sub Worksheet_SelectionCha ...
gca78000 發表於 2014-11-7 19:27 
???
看你用 Target.Address 我猜是要對某些儲存格做處理,
但你寫的 : a3-a7+e3e7+g3-g7+i3-i7+k3-k7+m3-m7 怪怪的.
e3e7 是哪個(或哪些) 儲存格位址的表示方式?
或是要用 e3:e7 (範圍儲存格)嗎?
另 a3-a7... 又加又減的,
是要對儲存格內容做計算,
還是要對儲存格位址作增減?
我猜測你可能是要當點擊了 :
a3,a7,e3,e7,g3,g7,i3,i7,k3,k7,m3,m7
等儲存格就要顯示UserForm1.
若是這樣我們可以先歸納這些儲存格位址的規律:
1. 都落在第 3 列與第 7 列 -> 列的表示方式為 Range.Row.
這樣只要一行 :
If Target.Row=3 Or Target.Row=7 Then
就能實現.
2. 欄序分別為 a,e,g,i,k,m 這 6 欄,則用 :
If Target.Column=1 Or Target.Column=5 Or Target.Column=7 Or Target.Column=9 Or Target.Column=11Or Target.Column=13 Then
來實現.
但這樣寫程式碼太長了,
對於非連續或不具規律性多組數字的判斷可以用
Select Case Target.Column
Case 1,5,7,9,11,13
...
end select
來實現,
好處是美觀, 具結構性易除錯及維護.
綜上所述程式可以修改如下:- Private Sub Worksheet_SelectionChange(ByVal Target As Range)
- Dim bShow As Boolean
-
- bShow = False
- With Target
- If .Row = 3 Or .Row = 7 Then
- Select Case .Column
- Case 1, 5, 7, 9, 11, 13
- bShow = True
- End Select
- End If
- End With
- If bShow Then UserForm1.Show
- End Sub
複製代碼 |
|