- 締切済み
実行時エラー '424' オブジェクトが必要です
デバッグ中で、下記のエラーが出て、進めません。 実行時エラー '424' オブジェクトが必要です。 Dim x1, x2, st1, st2, st3 As String x1 = Cells(41, 5).Value Set st1.Value = Application.WorksheetFunction.VLookup(x1, Range(Cells(102, 2), Cells(106, 4)), 3, False) x1 Cells(102, 2) Cells(106, 4)には値が入っています。 アドバイス宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- WindFaller
- ベストアンサー率57% (465/803)
- yaritsusozai
- ベストアンサー率59% (50/84)
関連するQ&A
- VBAで実行時エラー1004が出ます
VBAで実行時エラー1004が出ます。 「Rangeメソッドは失敗しました。Worksheetオブジェクト」です。 あらゆる可能性を調べたのですが、分かりません。誰か教えて頂けますでしょうか? 下記コードの「Cells(m, 7) =・・・」の部分がエラーになりました。 Sub ボタン1_Click() Dim 現シート As Worksheet ~ 現シート.Activate Cells(m, 7) = WorksheetFunction.VLookup(現シート.Range(現シート.Cells(m, 4)).Select, 現シート.Range(現シート.Cells(4, 104), 現シート.Cells(15, 107)).Select, 4, False) ~ End Sub 何卒宜しくお願いいたします。
- 締切済み
- Excel(エクセル)
- VBA 実行時エラー1004(その2)
毎度お世話になっております。 シート「sheet2」のA列のリスト内容を、シート「M_得意先」のリストからVLOOKUPして、指定のセルに書き出していくというコードを作成してみたのですが、VLOOKUPを実行する段階でエラーが出てしまいます。 少し変更して、同一シート内でのVLOOKUPは問題なく実行できたのですが...原因をご存知の方教えてください。 Dim b As String Dim endRcell2 As Long Dim cnt10 As long Sheets("sheet2").Select Sheets("sheet2").Range("A1").CurrentRegion.Select 'データ全体選択 Selection.SpecialCells(xlCellTypeLastCell).Select '最終行検出 endRcell2 = ActiveCell.Row cnt10 = 2 Do ↓実行時エラー1004が出る行 b = Application.WorksheetFunction.VLookup(Sheets("Sheet2").Range("A" & cnt10).Value, Sheets("M_得意先").Range(Cells(1, 1), Cells(endRcell, 2)), 2, False) ↑実行時エラー1004が出る行 Sheets("sheet2").Range("E" & cnt10).Value = b cnt10 = cnt10 + 1 Loop Until cnt10 = endRcell2
- ベストアンサー
- その他MS Office製品
- 実行時エラー”1004”アプリケーション定義または
次のようなコードで10の平均と20の平均はエラーにならないのですが75の時のみエラーになります Sheets(SN).Cells(gyou, 22)のセルにはすべて数字があるのですがエラーになります。 エラー”1004”アプリケーション定義またはオブジェクト定義のエラー au = 100 sk1 = 10 sk2 = 20 sk3 = 75 If WorksheetFunction.Sum(Range("V90:V99")) <> 0 Then Sheets(SN).Cells(au, 24).Value = Application.WorksheetFunction.Average(Sheets(SN).Range(Cells(au - (sk1 - 1), 22), _ Sheets(SN).Cells(au, 22))) End If If WorksheetFunction.Sum(Range("V75:V99")) <> 0 Then Sheets(SN).Cells(au, 25).Value = Application.WorksheetFunction.Average(Sheets(SN).Range(Cells(au - (sk2 - 1), 22), _ Sheets(SN).Cells(au, 22))) End If If WorksheetFunction.Sum(Range("V25:V99")) <> 0 Then Sheets(SN).Cells(au, 26).Value = Application.WorksheetFunction.Average(Sheets(SN).Range(Cells(au - (sk3 - 1), 22), _ Sheets(SN).Cells(au, 22))) エラーの原因を教えてくださいよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VLookupで一致しなかった時のVBAでの処理
On Error ~を使わないで、 VLookup()で一致しなかった時の処理をさせたいのですが どのように記述すればよいでしょうか。 例えば、以下のようなコードの場合、 一致したデータがない時にyに-1を代入するには 以下のコードをどのように記述すればよいのでしょうか。 --------------------- Dim x As Integer Dim y As String x = 7 y = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False) --------------------- 以下はいずれもエラーになりますが、以下のような感じで処理がしたいです。 --------------------- If IsError(Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False)) Then y = -1 Else y = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False) End If --------------------- If Application.WorksheetFunction.IsNA(Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False)) Then y = -1 Else y = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False) End If --------------------- y = Application.WorksheetFunction.IfError(Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False), -1) --------------------- なお、以下のように本来エラーではない処理で On Error Resume Nextを使うのは、 本当のエラーの処理と混同するため不可 --------------------- On Error Resume Next y = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False) If Err <> 0 Then y = -1 On Error GoTo 0 ---------------------
- ベストアンサー
- Excel(エクセル)
- ExcelマクロでVLOOKを実行したい
ExcelマクロでVLOOKを実行したい 同一シートにある「全体」の表から必要な項目をVLookで抜き出したくて 下記のマクロを作成しました。 「Sheet1」のA列(A2以下)には検索値(数字6ケタ)を入れています。 A2の検索値でヒットした値はB2・C2に入りましたが、A3以下の検索値は スルーされてしまいます。どこを直したら良いのか、ご教授ください。 よろしくお願いします。 ----------------------------------------------------------------------- Sub 検索して値を取得する() Dim 範囲 As Range Dim 検索値, i As Long Dim 出荷日 As Date Dim 商品名 As String Set 範囲 = Worksheets("全体").Range("E7:HG1000") Set 検索値 = Worksheets("Sheet1").Cells(i + 2, 1) If 検索値.Value <> "" Then 商品名 = Application.WorksheetFunction.VLookup(検索値, 範囲, 2, False) 出荷日 = Application.WorksheetFunction.VLookup(検索値, 範囲, 160, False) Cells(i + 2, 2).Value = 商品名 Cells(i + 2, 3).Value = 出荷日 i = i + 1 End If End Sub
- ベストアンサー
- オフィス系ソフト
- マクロに関するエラー(オブジェクトが必要です。)
マクロは始めてで、いろいろ調べながら作ってみたのですが、 Set検索値の行でオブジェクトが必要ですというエラーが出て、 先に進めなくなりました。 申し訳ないのですが、何方かエラーの対処法を教えていただけないでしょうか。 よろしくお願いします。 ========================== Sub test() Worksheets("2月分").Activate Dim 検索値 As Integer Set 検索値 = Worksheets("2月分").Cells(4, 18) Worksheets("テスト").Activate Dim B As Range Dim C As Range For Each B In Range("B13,B413") ' 第一条件 If B.Value >= 検索値 Then GoTo Continue End If ' 第二条件 If B.Offset(0, 1).Value < 検索値 Then ' Offset(0, 1) は B列の隣のC列の値を取得 GoTo Continue End If Dim aValue As String aValue = B.Offset(0, 2).Value Worksheets("2月分").Cells("D19").Value = aValue Continue: Next End Sub
- 締切済み
- その他(ビジネス・キャリア)
- VBA CHANGEイベントに複数イベントを
いつもお世話になっています。 色々しらべて試してみたんですが、うまくいかないんで教えてください。 CHANGEイベントに複数のイベントを書き込みたいんですが。 今現在、問題なく動いている以下のイベントがあります。 (1) Private Sub Worksheet_Change(ByVal Target As Range) Dim rang3 As Range Dim rang4 As Range Dim ■■ As String Dim LastRow1 As Long LastRow1 = Worksheets("○○").Cells(Rows.Count, "b").End(xlUp).Row Set rang4 = Worksheets("○○").Range("b:I" & LastRow) Set rang3 = Range("h4") If Intersect(Target, rang3) Is Nothing Then Exit Sub On Error Resume Next ■■ = WorksheetFunction.VLookup(Target.Value, rang4, 2, 0) If Err.Number > 0 Then MsgBox Target.Value & "はありません。基本情報台帳に入力してください。" Range("h4").Select Else Application.EnableEvents = False Range("I4").Value = Application.WorksheetFunction.VLookup(Target, Worksheets("△△").Range("b:I"), 2, False) Range("j4").Value = Application.WorksheetFunction.VLookup(Target, Worksheets("△△").Range("b:I"), 3, False) Range("k4").Value = Application.WorksheetFunction.VLookup(Target, Worksheets("△△").Range("b:I"), 7, False) Range("l4").Value = Application.WorksheetFunction.VLookup(Target, Worksheets("△△").Range("b:I"), 8, False) Range("m4").Value = Application.WorksheetFunction.VLookup(Target, Worksheets("△△").Range("b:I"), 5, False) Application.EnableEvents = True Range("K4").Select End If End Sub このシートにもう一つ、イベントを入れたいのですが。 (2) If Target.Count > 1 Then Exit Sub If Intersect(Target, Range("E4")) Is Nothing Then Exit Sub Else If Range("e4").Value = "1" Then Target.Offset(0, 19).Value = "☆" End If どこに入れればいいのかわかりません。 (3) また、(2)のイベントの他に、 (1)のVLOOLUPが実行され、尚且つ(2)のイベントのE4が値が1だった場合、Y4にH4の値を入れたいのですが・・・。 (2)のみなら動くことは確認できましたが、(1)のexit sub の直前に入れたり、end ifの前に入れたりしましたが、片方は動くが、もうひとつが動かないです。 (3)については、まったくわかりません。 マクロについて、自分でネットで勉強した程度なので、基本がわかっていないからなのでしょうが・・・。 どなたか、教えてください。 お願いします。
- ベストアンサー
- Visual Basic
- 実行時エラー '1004' の解決方法を教えて下さい。
Excel97, Windows98SEを使用しています。 ブック内にいくつかのシートがあり、その中のシートAとシートBの2シートを使って作業しています。 シートの名前は決まったものではありませんが、必ずシートAの右側にシートBがあります。 シートBのセルO5に、シートBのセルB5を検索値として、 シートAのセルB17から、B列の最終データ(途中空白有り)までを範囲として、VLOOKUP関数を入力しようとしています。 そこで下記のように書いたのですが、 実行時エラー '1004': アプリケーション定義またはオブジェクト定義のエラーです。 と出てしまい「デバッグ」をクリックすると、 Range("O5")").FormulaR1C1 = _… の部分が黄色くマークされてしまいます。 Sub test() Dim 前回シート As String Dim 前回オーダ As String ActiveSheet.Previous.Select 'シートAを選択 前回シート = ActiveSheet.Name 前回オーダ = ActiveSheet.Range(Cells(17, 2), Cells(Range("B65536").End(xlUp).Row, 2)).Address MsgBox 前回オーダ'どこを参照するのか確認するために試しに入れています。 ActiveSheet.Next.Select 'シートBを選択 Range("O5").FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC2,'" & 前回シート & "'!" & 前回オーダ & ",1,FALSE)),"""",IF(VLOOKUP(RC2,'" & 前回シート & "'!" & 前回オーダ & ",1,FALSE)="""","""",""●""))" End Sub どこをどのように修正すればエラーが出なくなりますでしょうか? ご存知の方、どうぞよろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- 「実行時424 オブジェクトが必要です」が出ます
全く理解できていない初心者です。 あるサイトで見つけたマクロです。 「検索結果のセルをすべて選択する」 Sub SelectTargets() Dim Target As String Dim FoundCell As Range, SearchArea As Range Dim Addr As String Dim FoundAddr() As String Dim i As Long Target = Application.InputBox("検索文字列入力", "検索", Type:=2) If Target = "False" Then Exit Sub Set SearchArea = ActiveSheet.UsedRange * Set FoundCell = SearchArea.Find(what:=Target, LookIn:=xlValues, _ LookAt:=xlPart, MatchCase:=False, MatchByte:=False) If FoundCell Is Nothing Then Exit Sub Addr = FoundCell.Address Do ReDim Preserve FoundAddr(i) '配列の内容を維持したまま再宣言 FoundAddr(i) = FoundCell.Address '検索結果のアドレスを配列に格納 Set FoundCell = SearchArea.FindNext(After:=FoundCell) i = i + 1 If FoundCell Is Nothing Then Exit Do Loop Until FoundCell.Address = Addr '配列に格納されたアドレスをカンマ区切りで結合し、セル範囲を一括選択 Range(Join(FoundAddr, ",")).Select '---(1) End Sub ↑家のエクセル(2010)では完璧でできるのですが、会社のエクセル(2003)では、「実行時424 オブジェクトが必要です」とエラーメッセージが出ます。 コードの入力ミスがありました。 上から2行目 Dim foundcell As Range, sercharea( 正 seacharea)As Range 後は、入力ミスはなさそうなのですが、実行キーを押すと 「実行時424 オブジェクトが必要で」と出ます。 黄色のマーカーが出るのが、*印を置いた ↓に出ます。 Set FoundCell = SearchArea.Find(what:=Target, LookIn:=xlValues, _ LookAt:=xlPart, MatchCase:=False, MatchByte:=False) 後、気になるのがコードを入力して 「target」「searcharea」「foundcell」「foundaddr」「addr」などが頭文字が大文字になりません。 無理やり大文字にしてみたりしましたが… 「オブジェクトが必要です」に関係あるのかないのかも分かりませんが、なぜ、エラーが出てしまうのか? 入力ミスが原因なのか? 何が足りないのか?何か不要なコードがあるのか? どの用意すればいいのか教えていただけませんか? よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- WorksheetFunctionオブジェクト
VBAで以下のロジックを実行すると、 ”アプリケーションの定義またはオブジェクトのエラーです”というエラーが発生します。 何が悪いのでしょうか? Private Sub ComboBox1_Change() For i = 1 To 5 Sheets(1).Cells(i, 3) = Application.WorksheetFunction.VLookup(Cells(i, 1), Range(Cells(1, 4), Cells(3, 5)), 2) Next i End Sub
- ベストアンサー
- Visual Basic
お礼
重ねて丁寧にコメント戴きありがとうございます。 エラーは回避できました。 エラー回避の方法も参考にさせて戴きます。