同じシートで日割計算または月額計算をしたいです。

Range("G15").Formula = "=IF(V2=""日割計算"","""",Day(EOMONTH(P3,1)))"

こうすると、日割計算のときは、G15は空欄になり、しないときは月の日数が自動入力されます。

そして日割計算するため、空欄のところに任意の日数たとえば、10を入れて保存します。

ところが当然のことながら再度シートを開くと、日数は空欄になってしまいます。

10を入れて保存しても、空欄にならないようにするには、どうしたらいいのでしょうか。

A 回答 (6件)

・ブックを開いた時、Range("G15")に関数式を設定する。


・ただし、Range("G15")に数値が手入力されていた場合は関数式を設定しない。
というルールにするなら

If Not IsNumeric(Range("G15").Formula) Then
Range("G15").Formula = "=IF(V2=""日割計算"","""",Day(EOMONTH(P3,1)))"
End If

でどうですか?
    • good
    • 0
この回答へのお礼

完璧にできました。回答が来ないので出来ないと思い閉鎖してほかの方法を考えようとしていました。
ありがとうございました。本当に感謝いたします。

お礼日時:2011/04/09 06:43

失礼しました


大幅に勘違い、No3は無視してください
    • good
    • 0

書き込む前に変数に取得しておけばいいんじゃないかと。



Dim HIWARI as Variant

HIWARI = RANGE("G15").Value
IF HIWARI = 0 THEN HIWARI =""
Range("G15").Formula = "=IF(V2=""日割計算"",HIWARI,Day(EOMONTH(P3,1)))"

処理のテストはしてないので動かないかもだけど、発想はこれでいい筈。

この回答への補足

やはり動作しません。

補足日時:2011/04/08 13:52
    • good
    • 0

G15が空欄でない場合に実行する条件を追加したら?


Range("G15").Formula = "=IF(V2=""日割計算"" And range("G15")<>"","""",Day(EOMONTH(P3,1)))"

こうかな?

この回答への補足

ご教示いただいたコードをコピペするとすべてが赤字で表示されてしまいます。

補足日時:2011/04/08 11:51
    • good
    • 0

補足要求する。


・質問者だけがシートを見えている。
・質問者だけが(少し広い)構想(=少し広く言って、何がしたいのか)がわかっている。
相当質問文章でで説明しないと読者にはわからないのだ。
質問で言えば、独りよがりの質問の仕方です。
その点を良く反省して補足してください。忙しい読者回答者のことを考えて。
また、この程度のことでは、関数を入れることで、賄えると思うが。なぜVBAか。
またVBAならIF文などを使うとも思う。
ーー
関係セルG15ーー式を入れるセル。結果を出すセル
V2セルーー文字列「日割り計算」かそれ以外の文字列(どんなものか)が入るセル?
空欄のところーーどのセルか。10を入れる。
>再度シートを開くと、日数は空欄
保存すして、開けばまま残るはず。
>10を入れて保存しても、空欄にならないようにするには、どうしたらいいのでしょうか
なんのこと?

この回答への補足

請求書ファイル(Excelブック)を開くと同時に、次のコードが実行されます。

Range("G15").Formula = "=IF(V2=""日割計算"","""",Day(EOMONTH(P3,1)))"

こうすると、日割計算のときは、G15は空欄になり、しないときは月の日数が自動入力されます。

このコードが実行されたあと、すぐに日割り計算の請求書作成するため、入力作業開始します。


そして日割計算するため、G15の空欄のところに、手動で任意の日数たとえば、10を入れて保存します。

この時点では、G15の欄には日数の10が入って保存され終了します。

しかし再度、この請求書ファイル(Excelブック)を開くと、上のコードが実行されるため

日数は空欄になってしまいます。

補足日時:2011/04/08 10:41
    • good
    • 0

説明をはしょりすぎですよ。



まず、
Range("G15").Formula=・・・
のコードは、どのタイミングで実行されるのですか?

>そして日割計算するため、空欄のところに任意の日数たとえば、10を入れて保存します。

この説明の中の「空欄のところ」というのは、どこですか?
G15ですか?

10を入れるのはどのタイミングですか?
誰が入れるのですか?マクロ?手動?

>ところが当然のことながら再度シートを開くと、日数は空欄になってしまいます。

なぜ「当然のこと」なのですか?
シートを開く(ファイルを開く?)タイミングで質問文にあるコードが自動で実行されるのですか?

もっと、解りやすい説明をお願いします。

この回答への補足

請求書ファイル(Excelブック)を開くと同時に、次のコードが実行されます。

Range("G15").Formula = "=IF(V2=""日割計算"","""",Day(EOMONTH(P3,1)))"

こうすると、日割計算のときは、G15は空欄になり、しないときは月の日数が自動入力されます。

このコードが実行されたあと、すぐに日割り計算の請求書作成するため、入力作業開始します。


そして日割計算するため、G15の空欄のところに、手動で任意の日数たとえば、10を入れて保存します。

この時点では、G15の欄には日数の10が入って保存され終了します。

しかし再度、この請求書ファイル(Excelブック)を開くと、上のコードが実行されるため

日数は空欄になってしまいます。

10を入れて保存しても、空欄にならないようにするには、どうしたらいいのでしょうか。

補足日時:2011/04/08 09:26
    • good
    • 0

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


人気Q&Aランキング