タイトルを読み取るすべての人が「ああ、いや、もう一度」とは言えません。しかしこれを掲示する前に、私は同じようなタイトルで約7〜8の以前の質問を読んだことがあり、誰も働いていないようでした。だから、これは契約です:エラー '1004':Rangeクラスの選択メソッドが失敗しました
マイブックには、ユーザーフォームを表示する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
仕事をすることができないと、このコードは、タイトルのようなエラーが発生しました。
このコードを動作させるためにいくつか試みました。
-Tried Application.GoTo
Select
の代わりにそれを使用します。
- ListBox1_Click
イベントのコードを標準モジュール内のサブに移動し、ListBox1_Click
イベントでこのサブを呼び出そうとしました。
- 最初にワークシートを選択しようとしました。
-Tried 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が何もないかどうかを確認してください。 –
'セルが何もない場合.Range(Cell、Cell.Offset(0、2))。 End If' – Dave