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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【再投稿】VBAのシフト表でバグが出て困っています 3 2022/09/24 08:29
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Visual Basic(VBA) Sheet1の出荷日と品名が並んだ表からSheet2の品名別出荷日別の個数一覧表を作っています。 オ 3 2022/12/01 23:54
- Excel(エクセル) 下記エクセルの式がなぜこうなるのか理由が知りたいです。 6 2022/08/20 00:43
- Visual Basic(VBA) ExcelのVBAでシフト表を作っていますが、バグが出て困っています 2 2022/09/13 11:33
- Visual Basic(VBA) VBAで列を削除 3 2023/02/01 11:00
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Excel(エクセル) エクセルで月末、月初の判定をしたい。 4 2022/05/18 23:22
- 簿記検定・漢字検定・秘書検定 簿記2級 表作成時の仕訳の問題 2 2022/07/07 18:15
- 就職・退職 現在勤めている会社を12月15日で退職予定です。(給料は末締めの翌25日払い) 今月頭に年末調整の書 5 2022/11/15 07:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで大量のファイルをシート名...
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
特定の文字を含むシートだけマ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
Excel VBA 複数行を数の分だけ...
-
実行時エラー'1004': WorkSheet...
-
Excelマクロのエラーを解決した...
-
VBA 存在しないシートを選...
-
VBA 入力月で該当シートを選択...
-
実行時エラー1004「Select メソ...
-
同じ作業を複数のシートに実行...
-
VBA 検索して一致したセル...
-
エクセルVBA ListBoxの並び...
-
IFステートの中にWithステート...
-
エクセルVBAでダブルクリックを...
-
EXCEL(VBA)でシート保護がかか...
-
別のシートを参照して計算する方法
-
セルのコピーで「オブジェクト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報