• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:実行時エラー '1004' の解決方法を教えて下さい。)

Excel実行時エラー '1004'の解決方法と対策

このQ&Aのポイント
  • Excel97, Windows98SEを使用している場合に発生する実行時エラー '1004' の解決方法をご紹介します。
  • エラーメッセージが表示され、デバッグをクリックするとRange("O5").FormulaR1C1 = ... の部分が黄色くマークされてしまう場合、修正する必要があります。
  • シートAとシートBでVLOOKUP関数を使用しようとしている際に、正しい範囲を指定しているか確認してください。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>多分、RC2というのはR1C1形式でセルを参照した >場合のセル番地(この場合はシートBのセルB7)だと >思います。 なるほど、そういうことですか。 「前回オーダ」の中身、MsgBoxで表示されてるのでわかると思いますが、R1C1形式になっていませんよね。 なのでここをR1C1形式にする必要があります。 前回オーダ = ActiveSheet.Range(Cells(17, 2), Cells(Range("B65536").End(xlUp).Row, 2)).Address(, , xlR1C1) のように、Addressメソッドのパラメータで、xlR1C1を指定してください。

takahiro_
質問者

お礼

ご回答どうもありがとうございます。 xlR1C1を指定しましたら上手くいきました。 自動記録で書いた数式ではRC2となっていても実際セルに式が入るとB17になっていたので、変数でも自動で変換されるものだと思っていました…。 とても助かりました。 またわからないことがありましたらよろしくお願いいたします。

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

RC2ってなんですか? 検索値でしたらダブルクォーテーションで囲ってください。 変数だったらそれなりに。

takahiro_
質問者

お礼

早速のアドバイスありがとうございます。 VLOOKUP関数の部分は、実際にセルにVLOOKUP関数を入れ、 マクロの自動記録でセルを相対参照にし、F2キーを押してからEnterキーを押した作業で記録されたものを 少し加工したものです。 これが加工する前の数式です。  Range("O6").FormulaR1C1 = _   "=IF(ISERROR(VLOOKUP(RC2,'シートA'!R[12]C[-13]:R[192]C[-13],1,FALSE)),"""",IF(VLOOKUP(RC2,'シートA'!R[12]C[-13]:R[192]C[-13],1,FALSE)="""","""",""●""))" 多分、RC2というのはR1C1形式でセルを参照した場合のセル番地(この場合はシートBのセルB7)だと思います。 自動記録したものをそのまま「マクロの実行」で実行させると上手くいきましたので、このまま使っているのですが…この部分も何か変更しないといけませんでしょうか?

takahiro_
質問者

補足

すみません、書き忘れていました…。 先ほどの自動記録したマクロを動作させたところ、セルではこのような数式になっていました。 =IF(ISERROR(VLOOKUP($B5,'シートA'!B17:B197,1,FALSE)),"",IF(VLOOKUP($B5,'シートA'!B17:B197,1,FALSE)="","","●"))