- ベストアンサー
VBAでダブルコーテーション入りの数式をセルにセットしたい
VBAにて下記質問があります。 複数の質問を連続して投稿するのもどうかと思い、 不慣れなもので、1投稿で2種類の質問を記載いたしましたが、 迷惑等になるのであれば、削除後複数投稿にて再度投稿したいと思いますので、遠慮なくご指摘下さい。 さて、本文ですが、 1.VBAにてExcelのあるセルに数式をセットしたいのですが、数式内にダブルコーテーションがある為、上手くセットできません。 2.VBAでRange関数のパラメータを可変にしたい。 1について、 セットしたい数式 =IF(ISERROR(VLOOKUP(H23,ini!B36:D401,3))=TRUE,"",IF(VLOOKUP(H23,ini!B36:D401,3)=0,"",VLOOKUP(H23,ini!B36:D401,3))) セットしたいセルをH44とした場合、単純に .Range("H44").Value = "=IF(ISERROR(VLOOKUP(H23,ini!B36:D401,3))=TRUE,"",IF(VLOOKUP(H23,ini!B36:D401,3)=0,"",VLOOKUP(H23,ini!B36:D401,3)))" このように書いてエラーになってしまいます。 ダブルコーテーションがあるので当然だとは思うのですが、 回避の仕方がわかりません。 また、2についてですが、 「ワークシートに書かれた値をRangeのパラメータとして代入したい。」 仮にSheet1のA2のセルにA~Fまでのいづれかの値が入るものとする。 Range関数の列の指定はA2の値を参照し、代入したい。 A2の値:C worksheets("sheet1").Range("〇1”).Value 〇にCが入るようにしたい。 当然、A2がFになったらFが代入されるようにしたい。 色々検索し、調べてみたのですが上手く見つけられませんでした。 VBA初心者である為、上記説明が分かりづらいかもしれませんが、 分かる方おりましたら、ご教授の程、よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ダブルコーテーションを表示するときには、もうひとつダブルコーテーションを付けてやります。 「"」を表示するときは、「""」と2つにするということ。 なので、質問の件は、「""""」と4つにすればいいわけです。 .Range("H44").Value = "=IF(ISERROR(VLOOKUP(H23,ini!B36:D401,3))=TRUE,"""",IF(VLOOKUP(H23,ini!B36:D401,3)=0,"""",VLOOKUP(H23,ini!B36:D401,3)))" ----------------------------------------------------- ●質問2. Range(Range("A2").Value & "1").Value または Cells(1, Range("A2").Value).Value 以上。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
(1) Sub test01() Range("A1").Value = "=IF(B1="""","""",C1)" Range("A2").Formula = "=IF(B1="""","""",C1)" End Sub (2) Sub test02() x = "C" MsgBox Worksheets("sheet1").Range(x & "1").Value End Sub 他にも実質同じにするやり方はあるが。
お礼
ダブルコートはダブルコートでくくればよいという事ですね。ありがとうございます。 .valueでも.Formulaでもどちらでも可と言う事ですよね。 迅速な回答ありがとうございました。
お礼
できました!ありがとうございます。 Rangeの中にRangeを記述するという発想がありませんでした。 ありがとうございました。