[算表] VBA下拉式選單觸發問題

看板Office作者 (溫柔殺手)時間7年前 (2018/09/20 16:18), 7年前編輯推噓0(0053)
留言53則, 3人參與, 7年前最新討論串1/1
軟體:Excel 版本:2007 各位板上的大大下午好,我寫了一個VBA用於紀錄接單資料。 其中包含了一個下拉選單。一個資料清除按鈕,一個資料儲存按鈕。 下拉式選單是選擇接單單位,資料清除按鈕是在資料儲存之後把頁面上的資料全部清除。 目前有遇到一個問題,我在下拉式選單有預設一個值,該值目的是為了提醒使用者要記 得選取。 但是當使用者Key完了一張單子之後,不會關閉頁面就繼續Key下一張單子,下拉式選單 會保持在使用者上一次選取的狀態。 如果使用者忘了修改,那麼就有可能會輸入錯的值。 所以我想在按下資料清除按鈕之後,把下拉式的選單回歸到預設值,請問應該要怎麼做? 下方是我目前下拉式選單的程式。 Public Sub Order_taking_department_GotFocus() With ActiveSheet.Order_taking_department .AddItem "A單位" .AddItem "B單位" .Value = "請選擇接單單位" End With End Sub Private Sub Order_taking_department_Change() '下拉選單 [A1].Value = Order_taking_department.Value End Sub 因為我不知道應該要怎麼樣用VBA去觸發GotFocus。 煩請大大指導,感謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.98.141 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1537431532.A.74A.html ※ 編輯: yimean (123.195.98.141), 09/20/2018 16:20:52

09/20 16:28, 7年前 , 1F
是指回歸預設值是指?gotfocus重覆觸發下會持續新增item,
09/20 16:28, 1F

09/20 16:29, 7年前 , 2F
而希望只顯示a,b單位嗎?
09/20 16:29, 2F

09/20 16:29, 7年前 , 3F
如果是的話可先在additem前先clear
09/20 16:29, 3F

09/20 16:32, 7年前 , 4F
是當我按下清除資料按鈕的時候,我的下拉式選單會顯示
09/20 16:32, 4F

09/20 16:32, 7年前 , 5F
"請選擇接單單位"
09/20 16:32, 5F

09/20 16:42, 7年前 , 6F
那在按鈕觸發時,將order_taking_department= "請選擇接單
09/20 16:42, 6F

09/20 16:43, 7年前 , 7F
單位";這裡已觸發了下拉選單change事件,所以在change內
09/20 16:43, 7F

09/20 16:44, 7年前 , 8F
判斷當order_taking_department非<>"請選擇接單單位"時填
09/20 16:44, 8F

09/20 16:44, 7年前 , 9F
入資料
09/20 16:44, 9F

09/21 08:28, 7年前 , 10F
不好意思請問"非<>"這個是代表什麼意思?
09/21 08:28, 10F

09/21 08:31, 7年前 , 11F
Change事件不是我要去按他選擇值才算觸發嗎?
09/21 08:31, 11F

09/21 08:33, 7年前 , 12F
所以,這個程式其實很有問題,一旦我一直去點選,那我的
09/21 08:33, 12F

09/21 08:34, 7年前 , 13F
Item就會一直增加。如果是這樣的狀況我應該要怎麼處理?
09/21 08:34, 13F

09/21 08:35, 7年前 , 14F
書上的範例是這樣寫的~>.<~
09/21 08:35, 14F

09/21 08:37, 7年前 , 15F
哈哈 我看到了,您第三行就解答我的疑惑了。感謝。
09/21 08:37, 15F

09/21 08:38, 7年前 , 16F
接下來我的問題還是,如何用另外一個按鈕,來讓下拉式選單
09/21 08:38, 16F

09/21 08:38, 7年前 , 17F
顯示Default的狀態。
09/21 08:38, 17F

09/21 09:36, 7年前 , 18F
如果把AddItem寫在Worksheet_Initialize()裡,然後按鈕就
09/21 09:36, 18F

09/21 09:36, 7年前 , 19F
只需要觸發把Value改成預設,會不會比較好實作?
09/21 09:36, 19F

09/21 09:38, 7年前 , 20F
非<>是指不等於"請選擇接單單位"
09/21 09:38, 20F

09/21 09:39, 7年前 , 21F
寫法為 order_taking_department <> "請選擇接單單位"
09/21 09:39, 21F

09/21 09:40, 7年前 , 22F
另外一個按妞,來讓下拉式選單顯示default("請選擇接單單
09/21 09:40, 22F

09/21 09:41, 7年前 , 23F
位")的狀態上,回文在按鈕觸發時,order_taking_departmen
09/21 09:41, 23F

09/21 09:43, 7年前 , 24F
t= "請選擇接單單位",來顯示default的值方面是否合適呢
09/21 09:43, 24F
感謝兩位大大的指導。 @Soyoso 請問一下如果依照您的指導,程式碼是不是應該變成如下? Private sub button_Click() CleanData Order_taking_department = "請選擇接單單位" End Sub Public Sub Order_taking_department_GotFocus() With ActiveSheet.Order_taking_department .Clean .AddItem "A單位" .AddItem "B單位" Order_taking_department <> "請選擇接單單位" End With End Sub Private Sub Order_taking_department_Change() '下拉選單 [A1].Value = Order_taking_department.Value End Sub ※ 編輯: yimean (114.33.116.8), 09/21/2018 11:46:37

09/21 11:46, 7年前 , 25F
資料更新
09/21 11:46, 25F

09/21 12:15, 7年前 , 26F
%Private Sub button_Click()
09/21 12:15, 26F

09/21 12:15, 7年前 , 27F
CleanData
09/21 12:15, 27F

09/21 12:15, 7年前 , 28F
Order_taking_department = "請選擇接單單位"
09/21 12:15, 28F

09/21 12:15, 7年前 , 29F
End Sub
09/21 12:15, 29F

09/21 12:15, 7年前 , 30F
09/21 12:15, 30F

09/21 12:15, 7年前 , 31F
Public Sub Order_taking_department_GotFocus()
09/21 12:15, 31F

09/21 12:15, 7年前 , 32F
With ActiveSheet.Order_taking_department
09/21 12:15, 32F

09/21 12:15, 7年前 , 33F
.Clean
09/21 12:15, 33F

09/21 12:15, 7年前 , 34F
.AddItem "A單位"
09/21 12:15, 34F

09/21 12:15, 7年前 , 35F
.AddItem "B單位"
09/21 12:15, 35F

09/21 12:15, 7年前 , 36F
End With
09/21 12:15, 36F

09/21 12:15, 7年前 , 37F
End Sub
09/21 12:15, 37F

09/21 12:15, 7年前 , 38F
09/21 12:15, 38F

09/21 12:15, 7年前 , 39F
Private Sub Order_taking_department_Change()
09/21 12:15, 39F

09/21 12:15, 7年前 , 40F
'下拉選單
09/21 12:15, 40F

09/21 12:15, 7年前 , 41F
If Order_taking_department <> "請選擇接單單位" Then
09/21 12:15, 41F

09/21 12:15, 7年前 , 42F
[A1].Value = Order_taking_department.Value
09/21 12:15, 42F

09/21 12:15, 7年前 , 43F
End If
09/21 12:15, 43F

09/21 12:19, 7年前 , 44F
End Sub
09/21 12:19, 44F

09/21 12:20, 7年前 , 45F
這樣做的原因是你賦予選單value的時候,就會觸發Change
09/21 12:20, 45F

09/21 12:20, 7年前 , 46F
event,因此在裡面加一個判斷,如果是預設值代表使用者尚
09/21 12:20, 46F

09/21 12:21, 7年前 , 47F
未選擇,所以只有不等於預設值時才要寫入[A1]
09/21 12:21, 47F

09/21 13:48, 7年前 , 48F
原po或n大測試上.clean都不會出錯?
09/21 13:48, 48F

09/21 13:49, 7年前 , 49F
測試是出現執行階段錯誤'438,物件不支援此屬性或方法
09/21 13:49, 49F

09/21 13:50, 7年前 , 50F
如回文為 .clear的方式
09/21 13:50, 50F

09/21 14:02, 7年前 , 51F
@Soyoso大大抱歉,您是對的。.Clear
09/21 14:02, 51F
※ 編輯: yimean (114.33.116.8), 09/21/2018 14:15:49

09/21 14:16, 7年前 , 52F
@newacc 感謝我試試看。
09/21 14:16, 52F

09/21 18:22, 7年前 , 53F
被抓到我沒有測試了( ̄▽ ̄#)﹏﹏
09/21 18:22, 53F
文章代碼(AID): #1RerViTA (Office)
文章代碼(AID): #1RerViTA (Office)