返回列表 上一主題 發帖

請問2010輸入日期

請教要如何修改才能在2欄以上使用,也就是說需要使用這個功能在多個相鄰或不相鄰的欄位使用的設定方式? 感恩 ...
Rachel 發表於 2011-10-1 13:50

若為不特定儲存格時 :
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.   With Target
  3.     If .Column = 2 Or .Column = 3 Then
  4.       Calendar1.Visible = True
  5.     Else
  6.       Select Case "C" + Trim(.Column) + "R" + Trim(.Row)
  7.       Case "C1R3"
  8.            ' ===== 點擊 A3 後的處理動作 =====
  9.       Case "C5R12"
  10.            ' ===== 點擊 E12 後的處理動作 =====
  11.       Case Else
  12.            ' ===== 點擊 其他 儲存格後的處理動作 =====
  13.         Calendar1.Visible = False
  14.       End Select
  15.     End If
  16.   End With
  17. End Sub
複製代碼

TOP

回復  luhpro
但想再請教您的是如果是6排整的欄位需要使用上月曆控制項,程式碼該如何修改呢?
例如:要設定在欄位   B,  C,  D,  E,  F,  D下所有的欄位都可以直接點選使用。
Rachel 發表於 2011-10-8 01:38

嗯..., 有兩種寫法 :

  03. If .Column > 1 and .Column < 8 Then

或 (調整 第 3 行 到 第 5 行 及 第 15 行 的內容)

  原 03. Select Case .Column
           Case 2 To 7
  原 04.     Calendar1.Visible = True
           Case Else
         End Select
  原 05. (Else 刪除)
  原 15. (End If 刪除)

第一種方式適合 "單一組" 連續欄位範圍 的處理,
而第二種方式則彈性比較大. (用法請參閱 VBA說明 -> Select Case 陳述式)

比較需要留意的是 :

第 1 種寫法中因為 第 3 行 與 第 6 行 互斥,(Else 功能等同 Not)
  03. If .Column > 1 and .Column < 8 Then
  04.   Calendar1.Visible = True
  05. Else
  06.   Select Case "C" + Trim(.Column) + "R" + Trim(.Row)

  14.   End Select
  15. End If
所以若兩者有 重疊的區域 且都應 觸發到條件 時,
底下第 6 行中的指令永遠都不會執行到.

而第二種寫法 則不論前面是否有執行,
只要條件符合照樣會執行到,
有可能會出現 執行兩次 的情形,
故應留意範圍是否有重疊而需做例外處理.

TOP

本帖最後由 luhpro 於 2014-9-2 21:10 編輯

回復 18# jackson7015
網路上找一下就有了:
請問一下excel的控制工具箱"月曆"控制項不見了  

微軟的下載網頁:
ACC97: Microsoft Access 97 ActiveX 控制項範例資料庫可用在下載中心
解壓縮後其中的 Mscal.ocx 檔案就包含 月曆控制項

TOP

        靜思自在 : 【時日莫空過】一個人在世間做了多少事,就等於壽命有多長。因此必須與時間競爭,切莫使時日空過。
返回列表 上一主題