EXCEL VBAで質問です。
関数が混在した以下の数式を、指定セルに入力するVBAの記述をお教えください。
A1セルに以下の数式を入力します。
=IF(B15-B16=0,"現金の過不足はありません",IF(B15-B16<0,"現金が"&TEXT(ABS(B15-B16),0)&"円超過しています","現金が"&TEXT(B15-B16,0)&"円不足しています"))
コードをずばりご教授ください。
どうぞよろしくお願いいたします。
あ、数式を入れるだけなんですね
Range("A1") = "=IF(B15-B16=0,""現金の過不足はありません"",IF(B15-B16<0,""現金が""&TEXT(ABS(B15-B16),0)&""円超過しています"",""現金が""&TEXT(B15-B16,0)&""円不足しています""))"
で "は ""にすればいいだけです。
以下の記述でOKです。こういった場合は記録マクロが便利ですね。
Range("A1").FormulaR1C1 = _ "=IF(R[14]C[1]-R[15]C[1]=0,""現金の過不足はありません"",IF(R[14]C[1]-R[15]C[1]<0,""現金が""&TEXT(ABS(R[14]C[1]-R[15]C[1]),0)&""円超過しています"",""現金が""&TEXT(R[14]C[1]-R[15]C[1],0)&""円不足しています""))"
激速のレスポンスありがとうございます。できれば相対参照ではなく、絶対参照がよいのですが、再送いただけますでしょうか?
If Range("B15") - Range("B16") = 0 Then
Range("A1") = "現金の過不足はありません"
Else
If Range("B15") - Range("B16") < 0 Then
Range("A1") = "現金が" & Abs(Range("B15") - Range("B16")) & "円超過しています"
Else
Range("A1") = "現金が" & (Range("B15") - Range("B16")) & "円不足しています"
End If
End If
となります。
いつもありがとうございます!質問の仕方がまずかったのかもしれません。すみません。質問の意図は、「関数を含んだ任意の式を、セルに入力する」という意味でした。
絶対参照なら、
Range("A1").FormulaR1C1 = _
"=IF(R15C2-R16C2=0,""現金の過不足はありません"",IF(R15C2-R16C2<0,""現金が""&TEXT(ABS(R15C2-R16C2),0)&""円超過しています"",""現金が""&TEXT(R15C2-R16C2,0)&""円不足しています""))"
こんな感じ。
なるほど、ありがとうございます。”R15C2”の部分は、Rangeを利用して、「B15」という形式での記述はできないのでしょうか?
あ、数式を入れるだけなんですね
Range("A1") = "=IF(B15-B16=0,""現金の過不足はありません"",IF(B15-B16<0,""現金が""&TEXT(ABS(B15-B16),0)&""円超過しています"",""現金が""&TEXT(B15-B16,0)&""円不足しています""))"
で "は ""にすればいいだけです。
りょうかいです。いつもすみません。。。ありがとうございました。
追記です。もし、R1C1形式だと分かりにくいなぁ...という事であれば、
下記の記述でもOKです。ポイントとして、""内で"を使用する場合は、
""と重ねる必要があります。よって作成した数式をエディタなどで
" → "" と置換し、両端を""で括り、Formulaプロパティで数式を代入します。
Range("A1").Formula = _ "=IF(B15-B16=0,""現金の過不足はありません"",IF(B15-B16<0,""現金が""&TEXT(ABS(B15-B16),0)&""円超過しています"",""現金が""&TEXT(B15-B16,0)&""円不足しています""))"
という事ではなく、絶対参照でという事であれば...
'A1形式 Range("A1").Formula = _ "=IF($B$15-$B$16=0,""現金の過不足はありません"",IF($B$15-$B$16<0,""現金が""&TEXT(ABS($B$15-$B$16),0)&""円超過しています"",""現金が""&TEXT($B$15-$B$16,0)&""円不足しています""))"
もしくは...
'R1C1形式 Range("A1").FormulaR1C1 = _ "=IF(R15C2-R16C2=0,""現金の過不足はありません"",IF(R15C2-R16C2<0,""現金が""&TEXT(ABS(R15C2-R16C2),0)&""円超過しています"",""現金が""&TEXT(R15C2-R16C2,0)&""円不足しています""))"
詳しいご説明恐縮です。ありがとうございました。
VBAのコードはご覧のとおりなのですが、
マクロの記録を使えば、とても便利だと思いますよ!
1.メニューバーより、[ツール]-[マクロ]-[新しいマクロの記録]でOKを押す。
2.数式をセルに入力する。
3.VBのエディターの標準モジュールを見れば、VBAのコードが作成されています。
Range("A1").FormulaR1C1 = _
"=IF(R[14]C[1]-R[15]C[1]=0,""現金の過不足はありません"",IF(R[14]C[1]-R[15]C[1]<0,""現金が""&TEXT(ABS(R[14]C[1]-R[15]C[1]),0)&""円超過しています"",""現金が""&TEXT(R[14]C[1]-R[15]C[1],0)&""円不足しています""))"
そうですね。このように作成すればよかったのだと思います。またご厄介になると思いますので、その際はよろしくお願いします!
りょうかいです。いつもすみません。。。ありがとうございました。