- ベストアンサー
Excel実行時エラー '1004'の解決方法と対策
- Excel97, Windows98SEを使用している場合に発生する実行時エラー '1004' の解決方法をご紹介します。
- エラーメッセージが表示され、デバッグをクリックするとRange("O5").FormulaR1C1 = ... の部分が黄色くマークされてしまう場合、修正する必要があります。
- シートAとシートBでVLOOKUP関数を使用しようとしている際に、正しい範囲を指定しているか確認してください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>多分、RC2というのはR1C1形式でセルを参照した >場合のセル番地(この場合はシートBのセルB7)だと >思います。 なるほど、そういうことですか。 「前回オーダ」の中身、MsgBoxで表示されてるのでわかると思いますが、R1C1形式になっていませんよね。 なのでここをR1C1形式にする必要があります。 前回オーダ = ActiveSheet.Range(Cells(17, 2), Cells(Range("B65536").End(xlUp).Row, 2)).Address(, , xlR1C1) のように、Addressメソッドのパラメータで、xlR1C1を指定してください。
その他の回答 (1)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
RC2ってなんですか? 検索値でしたらダブルクォーテーションで囲ってください。 変数だったらそれなりに。
お礼
早速のアドバイスありがとうございます。 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)だと思います。 自動記録したものをそのまま「マクロの実行」で実行させると上手くいきましたので、このまま使っているのですが…この部分も何か変更しないといけませんでしょうか?
補足
すみません、書き忘れていました…。 先ほどの自動記録したマクロを動作させたところ、セルではこのような数式になっていました。 =IF(ISERROR(VLOOKUP($B5,'シートA'!B17:B197,1,FALSE)),"",IF(VLOOKUP($B5,'シートA'!B17:B197,1,FALSE)="","","●"))
お礼
ご回答どうもありがとうございます。 xlR1C1を指定しましたら上手くいきました。 自動記録で書いた数式ではRC2となっていても実際セルに式が入るとB17になっていたので、変数でも自動で変換されるものだと思っていました…。 とても助かりました。 またわからないことがありましたらよろしくお願いいたします。