- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2024-11-14
|
9#
發表於 2016-6-5 00:39
| 只看該作者
本帖最後由 luhpro 於 2016-6-5 00:54 編輯
回復 luhpro
謝謝 luhpro 大大
我的資質駑鈍,GBKEE大大的方式解決了我的問題
可是還是想瞭解一下, ...
bsy4life 發表於 2016-6-3 09:43 
個人看到的情形提出淺見供你參考:
1.
Module 上設定 Public dPeo 為 "全域變數", (整個檔案任何地方都是使用同一個物件或變數)
但你在 ThisWorkBook 又設了一個 Dim dPeo,
Dim 的 dPeo 則為 區域變數,
只有這個 Sub 看的到,
執行到 End Sub 後 -> 出去 Sub 就自動被消滅了,
而因與 Module 的 dPeo 變數名稱相同,
這個 Sub 中使用到的 dPeo 一律預設使用 Dim 出來的這個 "區域變數",
也就是這個 Sub 中的賦值作業結果在其他任一 Sub 完全無法使用)
你的 Label8.Caption = dPeo(TextBox6.Text) 會發生錯誤是因為 UserForm 這個 Sub 看到的 dPeo 是空的.
(可以在執行到此行發錯誤時點 "偵錯" 按鈕, 再於 "即時運算視窗" 下此指令: debug.print dpeo.count 你會看到結果是 0 )
所以 ThisWorkBook 的 Dim dPeo 必須拿掉, 其他 Sub 才能正常使用到 ThisWorkBook 賦予 dPeo 的資料.
2. userform 中:
If IsNumeric(TextBox6.Text) Then
....
Else
If Not IsNumeric(TextBox6.Text) Then <- 這一行是多餘的 If X Then ... Else 指令的 Else 就是 當 Not X 的條件為 "真" 時執行.
...
End If <- 搭配 IF 的指令, 當 IF 拿掉時也要跟著拿掉
End If
Label8.Caption = dPeo(TextBox6.Text) '本來使用combobox,不知道如何取代所以用label測試
'不知為何要用 combobox ?
當使用者在 TextBox 輸入內容後,
這裡應該只有唯一的值(用 Label 物件就可以了),
而不是有好幾個值的清單物件.
除非你想要讓使用者接著可以再在 combobox 點選 操作人 以再次變更 TextBox 的內容.
註 : 若有此需求, 可以用 combobox.AddItem ... 以增加清單項目
End Sub
最後... 8# 的檔案有設密碼, 程式看不到...
額外建議 :
CNC名單(All) 如果應該是包含全部 操作人員(早, 中, 晚班) 的話,
可以考慮用 Dictionary 在開檔時在三個 Sheet 分別抓取,
然後在 CNC名單(All) 上動態建立清單. |
|