我已經創建了一個Userform,其中包含幾個選項按鈕作爲較大宏的一部分。如果存在特定的計算錯誤,用戶窗體將加載,並要求用戶選擇一種方法來糾正錯誤。一個選項啓用RefEdit控件,並允許用戶選擇新的起始單元格(並跳過當前和新定義的範圍之間的錯誤和單元格)。UserForm RefEdit - 重新初始化範圍選擇的代碼
我已經使用_Exit事件來設置一些錯誤檢查(例如,以確保選擇了有效範圍或確保範圍是1x1範圍),但我一直無法找到一種方法來強制RefEdit控件「重新初始化」。我曾嘗試使用RefEdit.SetFocus方法,但這不會產生我想要的結果。
基本上,有一個命令我可以使用它反映在RefEdit控件上單擊dropbutton的行爲?
Private Sub RefEdit_NewStartCell_Exit(ByVal Cancel As MSForms.ReturnBoolean) On Error Resume Next Set UserRange = Range(RefEdit_NewStartCell.Text) If Err.Number <> 0 Then MsgBox "Invalid range selected" RefEdit_NewStartCell.SetFocus End If On Error GoTo 0
只是一個愚蠢的問題:當有錯誤就不會被取消'= TRUE;所有你需要的? (我確定我弄錯了) –
不知道,我不太熟悉Cancel的工作原理。這隻會取代這條線嗎? '如果Err.Number <> 0 Then' – CrazyPianoMan
'Cancel = True'只會阻止如下操作:在ThisWorkbook:Private Sub Workbook_BeforeClose(取消爲布爾值):取消= True:End Sub如果您試圖關閉它觸發BeforeClose的工作簿。如果(在結束小組)'取消=真實'然後行動將被取消本身=>你不能關閉工作簿。如果RefEdit_NewStartCell_Exit的作用相同,那麼'如果Err.Number <> 0則Cancel = True'將阻止它退出,並且您將堅持選擇,直到'Range(RefEdit_NewStartCell.Text)'在Exit處沒有錯誤...但我不知道...只是試試:) –