- ベストアンサー
VBAについて
a1に2001/11/1、b1に2002/11/2と入力、 c1 に=if(yearfrac(a1,b1,3)>1 ・・・・・・と言うような 記述の事をVBAで表せばどのような記述になるでしょうか、お願いします、
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3さんから回答がでましたので、もういいとは思いますが・・・ #3さんの回答を流用します。 Sub aaa() a = Range("a1") b = Range("b1") If (Application.Run("ATPVBAEN.XLA!Yearfrac", a, b, 3) > 1) Then MsgBox "1年を超える" Else MsgBox "1年を超えない" End If end sub または sub aaa() If (Application.Run("ATPVBAEN.XLA!Yearfrac", Range("A1"), Range("B1"), 3) > 1) Then MsgBox "1年を超える" Else MsgBox "1年を超えない" End If End Sub >任意の年月日だから >range("a1")=datevalue("a1") >range("b1")=("b1") >range("c1").formula="=if(yearfrac(a1,b1,3)>1 ・・とすればよいですかね、 任意の年月日というのはA1セルとB1セルに入力すると言う意味ですか? いまだに質問を理解していなくて、すいません。
その他の回答 (3)
- nishi6
- ベストアンサー率67% (869/1280)
ツール→アドインで『分析ツール』と『分析ツール-VBA』の2つをチェックします。 下は2つのセルを引数にしたユーザー定義関数の例です。If以下は例です。 質問で言えば、C1に =myYearfrac(A1,B1) とします。Yearfracの3番目の引数はユーザー定義関数内で『3』にしています。 『ATPVBAEN.XLA』はYearfracが書き込まれているアドイン名です。(私のExcelはこうでした) アドインを追加すれば、VBE画面のプロジェクトエクスプローラで確認できます。 Function myYearfrac(rg1 As Range, rg2 As Range) Dim wariai As Double wariai = Application.Run("ATPVBAEN.XLA!Yearfrac", rg1, rg2, 3) If wariai > 1 Then myYearfrac = "1年超です" Else myYearfrac = "~1年です" End If End Function
お礼
本当に有り難うございました、
- taisuke555
- ベストアンサー率55% (132/236)
すいません。質問の意味がわかりません。 >a1とb1には任意の年月日を入力して1より大きいかを判定させます 何が1より大きいか判断させたいのでしょうか? ・b1とa1の差? >その時はDateValue("2001/11/1")や"2001/2/2"の処はどのような 記述になるでしょうか a1,b1も関数を入れたいのですか? c1のif文の中身ですか? もう少し、具体的に質問していただければ、私のわかる範囲で回答いたします。
補足
済みません、任意の年月日だから range("a1")=datevalue("a1") range("b1")=("b1") range("c1").formula="=if(yearfrac(a1,b1,3)>1 ・・とすればよいですかね、 其れからエクセル関数yearfracのはたらきと同じはたらきをするものはVBAでは何と記載すれば良いでしょうか、
- taisuke555
- ベストアンサー率55% (132/236)
ちょっと、質問の意味がわからないですけど・・・ こんな様な質問ですか? Sub a() Range("A1") = DateValue("2001/11/1") Range("B1") = "2002/2/2" Range("c1").Formula = "=if(yearfrac(a1,b1,3)>1・・・" End Sub ・日付はどちらの書き方でも日付とみなしてくれるようです。 ・数式は、完了していないとエラーになります。 質問内容が違うときはすみません。
補足
有り難うございます、お教えの通りでよいのですが、 a1とb1には任意の年月日を入力して1より大きいかを判定させます、 その時はDateValue("2001/11/1")や"2001/2/2"の処はどのような 記述になるでしょうか、何回も済みません、
お礼
そうです、a1,b1に入力すると言う事です、質問の仕方が悪く済みませんでした、 本当に有り難うございました、