• ベストアンサー

同一セルにIF文または任意の数値を入れたい

同じシートで日割計算または月額計算をしたいです。 Range("G15").Formula = "=IF(V2=""日割計算"","""",Day(EOMONTH(P3,1)))" こうすると、日割計算のときは、G15は空欄になり、しないときは月の日数が自動入力されます。 そして日割計算するため、空欄のところに任意の日数たとえば、10を入れて保存します。 ところが当然のことながら再度シートを開くと、日数は空欄になってしまいます。 10を入れて保存しても、空欄にならないようにするには、どうしたらいいのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

・ブックを開いた時、Range("G15")に関数式を設定する。 ・ただし、Range("G15")に数値が手入力されていた場合は関数式を設定しない。 というルールにするなら If Not IsNumeric(Range("G15").Formula) Then Range("G15").Formula = "=IF(V2=""日割計算"","""",Day(EOMONTH(P3,1)))" End If でどうですか?

aitaine
質問者

お礼

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

その他の回答 (5)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.5

失礼しました 大幅に勘違い、No3は無視してください

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.4

書き込む前に変数に取得しておけばいいんじゃないかと。 Dim HIWARI as Variant HIWARI = RANGE("G15").Value IF HIWARI = 0 THEN HIWARI ="" Range("G15").Formula = "=IF(V2=""日割計算"",HIWARI,Day(EOMONTH(P3,1)))" 処理のテストはしてないので動かないかもだけど、発想はこれでいい筈。

aitaine
質問者

補足

やはり動作しません。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

G15が空欄でない場合に実行する条件を追加したら? Range("G15").Formula = "=IF(V2=""日割計算"" And range("G15")<>"","""",Day(EOMONTH(P3,1)))" こうかな?

aitaine
質問者

補足

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

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

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

aitaine
質問者

補足

請求書ファイル(Excelブック)を開くと同時に、次のコードが実行されます。 Range("G15").Formula = "=IF(V2=""日割計算"","""",Day(EOMONTH(P3,1)))" こうすると、日割計算のときは、G15は空欄になり、しないときは月の日数が自動入力されます。 このコードが実行されたあと、すぐに日割り計算の請求書作成するため、入力作業開始します。 そして日割計算するため、G15の空欄のところに、手動で任意の日数たとえば、10を入れて保存します。 この時点では、G15の欄には日数の10が入って保存され終了します。 しかし再度、この請求書ファイル(Excelブック)を開くと、上のコードが実行されるため 日数は空欄になってしまいます。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

説明をはしょりすぎですよ。 まず、 Range("G15").Formula=・・・ のコードは、どのタイミングで実行されるのですか? >そして日割計算するため、空欄のところに任意の日数たとえば、10を入れて保存します。 この説明の中の「空欄のところ」というのは、どこですか? G15ですか? 10を入れるのはどのタイミングですか? 誰が入れるのですか?マクロ?手動? >ところが当然のことながら再度シートを開くと、日数は空欄になってしまいます。 なぜ「当然のこと」なのですか? シートを開く(ファイルを開く?)タイミングで質問文にあるコードが自動で実行されるのですか? もっと、解りやすい説明をお願いします。

aitaine
質問者

補足

請求書ファイル(Excelブック)を開くと同時に、次のコードが実行されます。 Range("G15").Formula = "=IF(V2=""日割計算"","""",Day(EOMONTH(P3,1)))" こうすると、日割計算のときは、G15は空欄になり、しないときは月の日数が自動入力されます。 このコードが実行されたあと、すぐに日割り計算の請求書作成するため、入力作業開始します。 そして日割計算するため、G15の空欄のところに、手動で任意の日数たとえば、10を入れて保存します。 この時点では、G15の欄には日数の10が入って保存され終了します。 しかし再度、この請求書ファイル(Excelブック)を開くと、上のコードが実行されるため 日数は空欄になってしまいます。 10を入れて保存しても、空欄にならないようにするには、どうしたらいいのでしょうか。

関連するQ&A