- - PR -
変数に""を入れたい
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-01-10 13:50
EXCELのVBAで以下のような文を書いて
連続したセルに計算式を代入したいと考えています。 例:B15のセルに「=IF(D15="",A15,0)」 B16のセルに「=IF(D16="",A16,0)」 For i = 15 To lastRow Step 1 Cell_B = "b" & i Range(Cell_B).Formula = "=IF(D" & i & "="",A" & i & ",0)" Next しかし、このまま動かしますと 「=IF(D15=",A15,0)」が代入されてしまいます。 ""を区切り記号としてではなく 文字列として代入したいのですがどのようにすれば出来るのでしょうか? 色々探したりやってみましたが出来ませんでした。 もしかしてすごく単純なことをきいているのかもしれませんが どなたかご教授お願いします。 | ||||||||
|
投稿日時: 2007-01-10 14:00
VBで "〜" の中に " を書く場合、"" というように2個続けて書くことで " という文字
を認識させています。 よって、 >「=IF(D15="",A15,0)」 の場合、 Range("B" & i).Formula = "=IF(D" & i & "="""",A" & i & ",0)" となります。 [ メッセージ編集済み 編集者: Blue 編集日時 2007-01-10 14:02 ] | ||||||||
|
投稿日時: 2007-01-10 14:28
ちなみに、B15〜BlastRowまで同じような式を入れるのであれば、
Range("B15:B" & lastRow).FormulaR1C1 = "=IF(RC[2]="""",RC[-1],0)" とすれば、文字列の結合もループ文もなくすっきりかけます。 追記: Formulaでも出来ます。(ただ、同行であっても行の指定をしないといけない。) Range("B15:B" & lastRow).Formula = "=IF(D15="""",A15,0)" [ メッセージ編集済み 編集者: Blue 編集日時 2007-01-10 14:42 ] | ||||||||
|
投稿日時: 2007-01-10 14:50
わかりにくいと感じるのであれば、
と定義して、
のようにすれば良いでしょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-01-11 10:41
皆さんありがとうございます。
"が4つ必要なのですね・・・ 非常に助かりました。 C#.NETや VB.NETやら WebアプリやらWindowsアプリやらで それぞれ違う部分があるので 大変です。 そのうえあまりやりたくないエクセルでのVBAを作ってます。 皆さんのご協力に感謝します。 | ||||||||
|
投稿日時: 2007-01-11 10:54
蛇足だとは思いつつ・・
本来は言語仕様を確認すべきですが、二重引用符で括った中で二重引用符を表現するときに2つ重ねて書くのはポピュラーな仕様だと思いますし、「""」が「"」になったという時点で気付いて欲しいところです。 |
1