![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67b6d)
いつもお世話になっております。
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら…
-
質問失礼します。 プログラム言語を一つも知らないのですが、C♯の勉強をしてみたいです。おすすめの教材
C言語・C++・C#
-
pythonの条件分岐(if)
その他(プログラミング・Web制作)
-
double型が正常に認識されていない恐れ
C言語・C++・C#
-
-
4
python の 連鎖代入の文法
その他(プログラミング・Web制作)
-
5
ハッシュテーブル(連想配列)が、キーのリストと値のリストを返すような実装の時、これらの位置が対応関係
その他(プログラミング・Web制作)
-
6
このように書くべきですか? { object = action() if(object.isSucc
その他(プログラミング・Web制作)
-
7
卒業研究でよく分からないところがあるので教えて欲しいです。 インバータ用組み込みソフトウェア開発シス
C言語・C++・C#
-
8
引数に数値、文字列の混在
Visual Basic(VBA)
-
9
初心者が簡単なPowerShellスクリプトを作ってみましたが動きません。アドバイスください。
その他(プログラミング・Web制作)
-
10
【IT導入補助金は個人事業主や中小企業が自社のホームページを開設しても貰えますか?】また
その他(プログラミング・Web制作)
-
11
sublimit textっていうエディタ、やたらテキストファイル開くの早いですが、あれより早いテキ
その他(プログラミング・Web制作)
-
12
chatGPTで次々と質問をしていくコード
その他(プログラミング・Web制作)
-
13
Notepad++の関数リスト表示でC言語のプログラムが正しく表示できない。
C言語・C++・C#
-
14
スカラーのベクトル微分
その他(プログラミング・Web制作)
-
15
プログラムの素朴な質問です 分岐するコードを書く時に、 /** * 関数 */ sub(){ ...
その他(プログラミング・Web制作)
-
16
WindowsのCapsLock(キャップスロック)って、何の意味があるんですか?
C言語・C++・C#
-
17
こんなことてしますか??
C言語・C++・C#
-
18
Excel VBA 文字列のセルを反映させたいです
Visual Basic(VBA)
-
19
mallocについて
C言語・C++・C#
-
20
VBAのコードを教えてください
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Mail Distributorで送信できま...
-
Google Chromeである動画が見ら...
-
エクセル共有設定時に画像を挿...
-
パソコン上で付箋の共有が「ぺた...
-
net useを使用すると…。
-
Windows98でネットワーク全体に...
-
勝手にC、Dドライブ共有にな...
-
グーグルドライブでファイル共...
-
社内LANにつながるけど、インタ...
-
「web上」と「インターネット上...
-
windows7 でPCを無線LAN接続か...
-
なぜプライベートIPではオンラ...
-
付き合っている彼から 時々 私...
-
pcの画面共有化って危険性あり...
-
パソコンからWi-Fiを飛ばす
-
windows10でWi-fiは有効になっ...
-
【Excel VBA】ネットワーク上の...
-
XPモードに共有フォルダを作成...
-
特定のサイトだけ「ネットワー...
-
自分のPCを会社のLANに接...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Mail Distributorで送信できま...
-
車検に出したら、ETCカードが挿...
-
ExcelVBAでFormulaR1C1を列範囲...
-
PSPのエラー
-
IODATAのLAN DISK HDL-Cへの接続
-
word97でページ設定を開くとエ...
-
mail distributorのエラー
-
Google Chromeである動画が見ら...
-
au Android KYOCERA V01 で天気...
-
携帯サイトを.htaccessにてPCか...
-
SSG140 CISCO1812 間、VPN接続
-
アクセス制御?
-
word 原稿用紙
-
プロクシを通すべきか
-
LAN内でPINGが片側通行
-
エクセル共有設定時に画像を挿...
-
「web上」と「インターネット上...
-
パソコン上で付箋の共有が「ぺた...
-
Windows7で共有ボタンがグレー
-
社内LANにつながるけど、インタ...
おすすめ情報
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]),"""")"