アプリ版:「スタンプのみでお礼する」機能のリリースについて

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初心者である為、上記説明が分かりづらいかもしれませんが、
分かる方おりましたら、ご教授の程、よろしくお願い致します。

A 回答 (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
 
以上。
 
    • good
    • 0
この回答へのお礼

できました!ありがとうございます。
Rangeの中にRangeを記述するという発想がありませんでした。
ありがとうございました。

お礼日時:2008/04/24 13:33

(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
他にも実質同じにするやり方はあるが。
    • good
    • 0
この回答へのお礼

ダブルコートはダブルコートでくくればよいという事ですね。ありがとうございます。
.valueでも.Formulaでもどちらでも可と言う事ですよね。

迅速な回答ありがとうございました。

お礼日時:2008/04/24 09:42

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

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


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