
No.3ベストアンサー
- 回答日時:
一例です。
対象シートのタブ上で右クリック→コードの表示→以下のサンプルを貼り付けてお試しください。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B3:B53")) Is Nothing Then Exit Sub
For Each a In Target
If IsDate(a) Then
月数 = 3
If Day(a) > 15 Then 月数 = 4
a.Offset(0, 1) = DateSerial(Year(a), Month(a) + 月数, 0)
Else
a.Offset(0, 1).ClearContents
End If
Next
End Sub
この回答への補足
ありがとうございました
コードの貼り付けが上記の方法で出来る事を知りませんでした
こんなに簡単な方法が有ったんですね
コードは思っていたより難しかったので聞いて良かったと思いました。
出来なくて、参考書見ながらずーと考えていたので助かりました。
No.2
- 回答日時:
マクロでというよりも関数で十分対応できますね。
次のようにしてはどうでしょう。C3セルに次の式を入力してC53セルまでオートフィルドラッグします。
=IF(A1="","",IF(DAY(B3)<=15,DATE(YEAR(B3),MONTH(B3)+3,0),DATE(YEAR(B3),MONTH(B3)+4,0)))
早速の返答ありがとうございました。
C3セルに入力してB3セルには普通に2/5と入力して試ればよいのでしょうか?
うまく出来なかったのでB3セルへの入力の仕方が悪いのかなと思いました。
関数で出来れば簡単でいいので完成させたいです。
No.1
- 回答日時:
VBAを使わなくても、ワークシート関数で、
=IF(DAY(B3)<=15,EOMONTH(B3,2),EOMONTH(B3,3))
とすれば、実現できる。2ヵ月後とかいうのが、いつのことか明確ではないので、上記2,3は1,2になるのかもしれないが。
VBAなら、そのまま、ワークシート関数を使えばできるでしょう。
Sub test()
Set myrange = Range("B3:B53")
For Each c In myrange
If Day(c) <= 15 Then
m = 2
Else
m = 3
End If
c.Offset(, 1) = Application.WorksheetFunction.EoMonth(c, m)
Next
End Sub
2,3は、2ヵ月後とかいうのが、いつのことか明確ではないので、上記2,3は1,2になるのかもしれないが。
早速、返答を頂きましてありがとうございます・
書き方が解りにくくて申し訳ありませんでした。
1日~15日なら2ヵ月後の月末日と言うのは
例えば2/10を入力すると、4/10が2ヵ月後なので4月の末日は4/30
16日~31日なら3ヵ月後の月末日と言うのは
例えば2/18を入力すると、5/18が3ヵ月後なので5月の末日は5/31
と表示したいと思っています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
実行時エラー1004「Select メソ...
-
XL:BeforeDoubleClickが動かない
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
VBA 存在しないシートを選...
-
Excel VBA リンク先をシート...
-
Excel チェックボックスにチェ...
-
エクセルVBA Ifでシート名が合...
-
【Excel VBA】Worksheets().Act...
-
Worksheet_Changeの内容を標準...
-
同じ作業を複数のシートに実行...
-
【VBA】色のついたシート名を取得
-
実行時エラー'1004': WorkSheet...
-
Excel VBA 複数行を数の分だけ...
-
VBA 検索して一致したセル...
-
シートが保護されている状態で...
-
ユーザーフォームに入力したデ...
-
VBAでシート挿入を禁止したい。
-
VBでEXCELのシートのコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
エクセルVBA Ifでシート名が合...
-
実行時エラー1004「Select メソ...
-
VBA 存在しないシートを選...
-
エクセルで通し番号を入れてチ...
-
VBA 検索して一致したセル...
-
XL:BeforeDoubleClickが動かない
-
VBA 指定した回数分、別シート...
-
VBAマクロでシートコピーした新...
-
シートが保護されている状態で...
-
ブック名、シート名を他のモジ...
-
【VBA】全ての複数シートから指...
-
別のシートから値を取得するとき
-
ExcelのVBAのマクロで他のシー...
-
Excel チェックボックスにチェ...
おすすめ情報