プロが教えるわが家の防犯対策術!

いつもお世話になっております。
ExcelVBAですが、FormulaR1C1を使いたいのですが、エラーになってしまいます。
列で指定したいのですが、どのように記載したらよいのか分かりません。

下記の設定!$D:$AA と 設定!$D:$D がうまくR1C1で記載できていません。

・元のA1タイプの関数
IFERROR(IF(C8="","",INDEX(設定!$D:$AA, MATCH(C8&D8,設定!$D:$D,FALSE),11)*E8),"")

・RIC1(Excel上で確認した関数)
IFERROR(IF(RC[-4]="","",INDEX(設定!C4:C27, MATCH(RC[-4]&RC[-3],設定!C4,FALSE),11)*RC[-2]),"")


・VBA上でエラーになるコード
Cells(Target.Row, Target.Column).Offset(, 2).FormulaR1C1 = "=IFERROR(IF(RC[-3]="","",INDEX(設定!C4:C31, MATCH(RC[-3]&RC[-2],設定!C4,FALSE),25)*RC[-1]),"")"

お手数をおかけしますが、ご教授頂けますと助かります。
よろしくお願いいたします。

以上

質問者からの補足コメント

  • fujillinさん、ありがとうございます。

    ちなみに、ここのTargetは、Worksheet_Changeイベントで使っているものです。

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    です。

    No.2の回答に寄せられた補足コメントです。 補足日時:2024/03/08 22:22
  • できました。

    結局、列指定のところは問題なく、IFERRORの最後の""が問題でした。ご指摘通りでした。
    ありがとうございました。

    Cells(Target.Row, Target.Column + 2).FormulaR1C1 = "=IFERROR(IF(RC[-3]="","",INDEX(設定!C4:C31, MATCH(RC[-3]&RC[-2],設定!C4,FALSE),25)*RC[-1]),"""")"

      補足日時:2024/03/11 01:03

A 回答 (2件)

こんばんは



設定するセルである
>Cells(Target.Row, Target.Column).Offset(, 2)
は正しいものとして(=E列以降の列でないと式がエラーになる)・・

R1C1形式の問題と言うよりも、文字列の定義の仕方の問題のような気がします。
(仮に、A1形式で設定しても同じようにエラーになると推測します)

設定する関数式内のダブルクォーテーション(=「"」)はエスケープしないと文字列として正しく解釈されません。
ダブルクォーテーション内のダブルクォーテーションは、二つ連続して記入するようにしてください。
http://officetanaka.net/excel/vba/tips/tips90.htm
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2024/03/11 01:03

No1です。



ご質問には関係ありませんけれど、ついでながら・・

>Cells(Target.Row, Target.Column).Offset(, 2)~~
対象セルが、既に変数 TargetCell などに設定されているのなら
 TargetCell.Offset(, 2)~~
はあるとは思いますけれど、(はっきりとはしませんが)変数 Target がRangeオブジェクトのように見受けられるので、
  Target.Offset(, 2)~~
でも良さそうに思われますが・・?

ご提示のように、
 Cells(行番号, 列番号)
形式で指定するのなら、Offsetは不要で、
 Cells(Target.Row, Target.Column + 2)~~
でも良いですし、もしも対象の列が固定(=G列とか)であるなら
 Cells(Target.Row, 7)~~

 Cells(Target.Row, "G")~~
でも良いはずです。

要は、記述方法を単純化しておいた方が、間違えの入り込む余地が減るであろうという意味です。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2024/03/11 01:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A