- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2024-11-14
|
3#
發表於 2011-9-24 21:54
| 只看該作者
本帖最後由 luhpro 於 2011-9-24 22:07 編輯
想請問一下!
如果我要設定一按到某分頁(比如業績)便會出現小視窗要我輸入日期確定後P3就等於剛剛輸入之日期 ...
fmsc168 發表於 2011-9-24 14:44 
我想第一個問題解決的關鍵應該是在 :
要如何在切換頁簽(即你所說的分頁)時觸發開啟輸入日期的小視窗,
並且能正確的將日期文字放到該頁簽指定的儲存格上.
在思考解決方案時可先確認變動項目(需要於切換頁簽時觸發事件)與共同母體(頁簽的 Parent 為 ThisWorkBook)
故而可以在 ThisWorkBook 上尋找是否有合適的觸發事件可以運用,
可能的事件有 SheetChange 與 SheetActivate.
在ThisWorkBook的左邊選單選 ThisWorkBook, 右邊再分別選上述兩個事件即可自動產生相應的程序,- Private Sub Workbook_SheetActivate(ByVal Sh As Object)
- End Sub
複製代碼- Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
- End Sub
複製代碼 從上述程序抬頭的()內容中可以看出來 Sh 可能就是我們想要的 SheetName,
接著只要分別放入 MsgBox 秀出 Sh 內容就可以確認哪個是我們想要的事件,
然後就是試著實際切換頁簽看看以確認到底是會觸發那一個程序了.- Private Sub Workbook_SheetActivate(ByVal Sh As Object)
- MsgBox ("你選擇了 " & Chr(34) & Sh.Name & Chr(34) & "頁簽")
- End Sub
複製代碼 一般來說接受使用者輸入日期可以用輸入框、選單也可以用Calendar,
因為採用輸入框輸入日期可能需要作輸入內容的錯誤處理,
而選單則需要設定選單各選項初值,
故建議用 Calendar 較簡單.
只要注意開檔時隱藏,觸發時顯示出來,選擇日期後應如何抓取該日期並再次隱藏即可.
因需要在各頁簽都能使用故應放在 Sheet 外(即Module <共用程序或整體變數宣告> 或 UserForm<元件>),
可先建立表單(UserForm)再放入 MonthView 元件來達成,
而因該頁簽名稱需要在表單與頁簽間傳遞故應在模組中宣告其為 Public 以便整個檔案中都能共用. (Public 要放在模組的最上面)
(以下程式放在 ThisWorkBook)- Private Sub Workbook_Open()
- UserForm1.Hide ' 檔案開啟時隱藏 UserForm(Calendar)
- End Sub
- Private Sub Workbook_SheetActivate(ByVal Sh As Object)
- Shn = Sh.Name ' 保存所點選的 Sheet 名稱, 以便選擇日期後將日期傳給該頁簽
- UserForm1.Show ' 顯示 Calendar 以便選日期
- End Sub
複製代碼 (以下程式放在 UserForm1)- Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
- Sheets(Shn).Range("P3") = DateClicked ' 將日期設定給所選頁簽的 P3 儲存格內
- UserForm1.Hide ' 隱藏 UserForm(Calendar)
- End Sub
複製代碼 (以下宣告放在 Module 內)- Public Shn$ ' 宣告 Sheet 名稱可以在各程序中共用
複製代碼 至於第二個問題印象中本網站之前有人討論過, 建議你可以找找看. |
|