我確信每個讀取標題的人都會說「哦不,不是」。但在發佈之前,我已經閱讀了大約7-8個類似標題的以前的問題,似乎沒有人能夠工作。因此,這是這筆交易:錯誤'1004':選擇範圍級失敗的方法
我的工作簿中使用Workbook_Open
事件來顯示用戶窗體:
Sub Workbook_Open()
UserForm1.Show
End Sub
Userform1
包括一個文本框和一個列表框。根據用戶在文本框中輸入的內容,動態地爲列表框填充數據。到目前爲止一切都好。
當用戶單擊列表框中的某個值時,我想要選擇一個特定的單元格。所以我用這個:
Private Sub ListBox1_Click()
Dim Cell As Range
With ThisWorkbook.Worksheets(1)
Set Cell = .Range("C3", .Cells(.Rows.Count, 3).End(xlUp)).Find(UserForm1.ListBox1.Text, LookIn:=xlValues)
.Range(Cell, Cell.Offset(0, 2)).Select
End With
End Sub
但正如我之前許多人一樣,我不能讓Select
正常工作,這給了代碼如標題錯誤。
我嘗試了幾件事情來使這個代碼工作。
- 已結束Application.GoTo
,用它來代替Select
,正如某人的建議。
- 已將ListBox1_Click
事件的代碼移動到標準模塊內的子代碼中,並使用ListBox1_Click
事件調用該子代碼。
- 嘗試首先按其他人的建議選擇工作表。
- 已結束Worksheets(1).Visible = True
正如其他人所建議的。
- 先用AppActivate Application.Caption
激活應用程序的主窗口。
-Tried滾動到所需的細胞,而不是選擇的:
Private Sub ListBox1_Click()
Dim foundRow As Integer
With ThisWorkbook.Worksheets(1)
foundRow = .Range("C3", .Cells(.Rows.Count, 3).End(xlUp)).Find(UserForm1.ListBox1.Text, LookIn:=xlValues).Row
End With
ActiveWindow.ScrollRow = foundRow - 1
End Sub
我也嘗試過其他不太重要的變化,但我堅持了下來。有趣的是,在使用Workbook_Open
事件之前,我有UserForm1
通過宏分配給工作表中的按鈕/形狀,然後一切正常。
有誰知道我會如何使Select
工作在我的情況?
另一方面,很好理解Select
會導致很多問題,所以我沒有卡住它。如果任何人有另一種方式來獲得相同的結果,我全部耳朵。
我敢打賭,「細胞」是沒有什麼。 –
是否已找到導致單元格成爲範圍的值。在麻煩的線上劃一個斷點,看看Cell是不是Nothing –
'如果沒有單元沒有,那麼.Range(Cell,Cell.Offset(0,2))。Select else msgbox「找不到單元格值!結束如果' – Dave