いつもお世話になっております。
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]),"")"
お手数をおかけしますが、ご教授頂けますと助かります。
よろしくお願いいたします。
以上
No.1ベストアンサー
- 回答日時:
こんばんは
設定するセルである
>Cells(Target.Row, Target.Column).Offset(, 2)
は正しいものとして(=E列以降の列でないと式がエラーになる)・・
R1C1形式の問題と言うよりも、文字列の定義の仕方の問題のような気がします。
(仮に、A1形式で設定しても同じようにエラーになると推測します)
設定する関数式内のダブルクォーテーション(=「"」)はエスケープしないと文字列として正しく解釈されません。
ダブルクォーテーション内のダブルクォーテーションは、二つ連続して記入するようにしてください。
http://officetanaka.net/excel/vba/tips/tips90.htm
No.2
- 回答日時:
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")~~
でも良いはずです。
要は、記述方法を単純化しておいた方が、間違えの入り込む余地が減るであろうという意味です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 「1004:アプリケーション定義またはオブジェクト定義のエラー」への解消方法に関して 1 2023/07/09 11:47
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Excel(エクセル) 【!】Excel 2つの条件付き書式が反映されません。。 5 2023/07/14 16:47
- Excel(エクセル) Excel 値を返す数式についてです 3 2022/11/21 20:08
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
質問失礼します。 プログラム言語を一つも知らないのですが、C♯の勉強をしてみたいです。おすすめの教材
C言語・C++・C#
-
License='MIT' ってなんでmitなんですか??適当なのでもいいですか? パイソン
C言語・C++・C#
-
JRのjsonファイルって使って大丈夫そ?
その他(プログラミング・Web制作)
-
-
4
卒業研究でよく分からないところがあるので教えて欲しいです。 インバータ用組み込みソフトウェア開発シス
C言語・C++・C#
-
5
このように書くべきですか? { object = action() if(object.isSucc
その他(プログラミング・Web制作)
-
6
pythonの条件分岐(if)
その他(プログラミング・Web制作)
-
7
python の 連鎖代入の文法
その他(プログラミング・Web制作)
-
8
初心者が簡単なPowerShellスクリプトを作ってみましたが動きません。アドバイスください。
その他(プログラミング・Web制作)
-
9
ハッシュテーブル(連想配列)が、キーのリストと値のリストを返すような実装の時、これらの位置が対応関係
その他(プログラミング・Web制作)
-
10
Notepad++の関数リスト表示でC言語のプログラムが正しく表示できない。
C言語・C++・C#
-
11
WindowsのCapsLock(キャップスロック)って、何の意味があるんですか?
C言語・C++・C#
-
12
double型が正常に認識されていない恐れ
C言語・C++・C#
-
13
プログラミングで詰まった時って皆さんどうしていますか?
その他(プログラミング・Web制作)
-
14
ストリームについて。
C言語・C++・C#
-
15
フォルダを自動作成・移動を複数ファイルに対して行うバッチ処理について
その他(プログラミング・Web制作)
-
16
c#のTLS1.2での通信について
C言語・C++・C#
-
17
擬似コード
C言語・C++・C#
-
18
C言語 解答について。
C言語・C++・C#
-
19
バッファリングについて。
C言語・C++・C#
-
20
擬似コード 長さがmの配列でなんで For i =0 to m とかかくの?m-1までしかないでしょ
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAでFormulaR1C1を列範囲...
-
携帯サイトを.htaccessにてPCか...
-
Xlink kaiの設定でエラーが出て...
-
車検に出したら、ETCカードが挿...
-
au Android KYOCERA V01 で天気...
-
■FWのフィルター設定で、特定の...
-
Mail Distributorで送信できま...
-
集合住宅でのインターネットセ...
-
Google Chromeである動画が見ら...
-
word97でページ設定を開くとエ...
-
LAN内でPINGが片側通行
-
Fedora Core5でPostfixでメール...
-
Forbiddenの対処法
-
PSPのエラー
-
windows10SSDクリーンインスト...
-
「web上」と「インターネット上...
-
Windows7で共有ボタンがグレー
-
【Excel VBA】ネットワーク上の...
-
Googleフォトは共有機能で気付...
-
新ルータがDHCPサーバからIPア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAでFormulaR1C1を列範囲...
-
Mail Distributorで送信できま...
-
車検に出したら、ETCカードが挿...
-
word97でページ設定を開くとエ...
-
Fedora Core5でPostfixでメール...
-
アクセス制御?
-
Google Chromeである動画が見ら...
-
携帯サイトを.htaccessにてPCか...
-
PSPの通信(アドホック?
-
集合住宅でのインターネットセ...
-
■FWのフィルター設定で、特定の...
-
LAN内でPINGが片側通行
-
au Android KYOCERA V01 で天気...
-
Forbiddenの対処法
-
「web上」と「インターネット上...
-
【Excel VBA】ネットワーク上の...
-
インターネットの使い方とブロック
-
PC同士の近距離共有での送信は...
-
留学生に説明するとき、どっち...
-
エクセル共有設定時に画像を挿...
おすすめ情報
fujillinさん、ありがとうございます。
ちなみに、ここのTargetは、Worksheet_Changeイベントで使っているものです。
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
です。
できました。
結局、列指定のところは問題なく、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]),"""")"