
No.3ベストアンサー
- 回答日時:
No.2です。
こんな感じでしょうか?
Sub megu_3()
Dim r1 As Range, r2 As Range
Dim i As Integer, v As Variant
Dim vv As Variant, d As Date
v = Application.InputBox("年/月とその後にカンマ区切りで期間(最大:12)を半角数字で入力してください。" _
& vbCrLf & "例: 2020/1,6", Type:=2)
If v = False Then MsgBox ("キャンセルされましたので終了します"): Exit Sub
vv = Split(v, ",")
If IsDate(vv(0) & "/1") = False Then MsgBox ("日付に変換出来ない値なので終了します"): Exit Sub
d = CDate(vv(0) & "/1")
Set r2 = Worksheets("Sheet2").Range("A1")
With Worksheets("Sheet1")
Set r1 = .Range("B1", .Cells(Rows.Count, "B").End(xlUp))
End With
For i = 0 To Val(vv(1)) - 1
r1.Copy r2.Range("B1")
r2.Resize(r1.Rows.Count).Value = Format(DateAdd("m", i, d), "yyyymm")
Set r2 = r2.Offset(r1.Rows.Count)
Next
Set r1 = Nothing
Set r2 = Nothing
End Sub
何度も有難うございます。
私が必要としていたレベル以上のものを教えて頂きました。
本当に有難うございました。
メッセージボックスを作成し、継続する月数迄入力するなんて。
目から鱗。
本当に色々と勉強をさせて頂きました。
これで今日は安心して眠れます。
有難うございました。
No.2
- 回答日時:
No.1です。
改良はしてみました。
余計なものもあるかもですが、参考になれば幸いです。
Sub megu_2()
Dim r1 As Range, r2 As Range
Dim i As Integer, v As Variant, d As Date
v = Application.InputBox("年/月を半角文字で入力してください" & vbCrLf & "例: 2020/1", Type:=2)
If v = False Then MsgBox ("キャンセルされましたので終了します"): Exit Sub
If IsDate(v & "/1") = False Then MsgBox ("日付に変換出来ない値なので終了します"): Exit Sub
d = CDate(v & "/1")
Set r2 = Worksheets("Sheet2").Range("A1")
With Worksheets("Sheet1")
Set r1 = .Range("B1", .Cells(Rows.Count, "B").End(xlUp))
End With
For i = 0 To 5
r1.Copy r2.Range("B1")
r2.Resize(r1.Rows.Count).Value = Format(DateAdd("m", i, d), "yyyymm")
Set r2 = r2.Offset(r1.Rows.Count)
Next
Set r1 = Nothing
Set r2 = Nothing
End Sub
ところでスタートする年月は変動させるとしても期間は開始年月含めて6ヶ月固定で宜しいのでしょうか?
めぐみんさん
またまたご回答頂き有難うございます。
今回もまたまた感謝です。
ご指摘の通り期間は最終的には12か月を考えております。
従いましてスタートが2020/8だと最終は2021/7となれば最高です。(12カ月間)
No.1
- 回答日時:
ちょっと手抜きっぽい感じはしますが。
。。Sub megu()
Dim r1 As Range, r2 As Range
Dim i As Integer
Set r2 = Worksheets("Sheet2").Range("A1")
With Worksheets("Sheet1")
Set r1 = .Range("B1", .Cells(Rows.Count, "B").End(xlUp))
End With
For i = 1 To 6
r1.Copy r2.Range("B1")
r2.Resize(r1.Rows.Count).Value = "202" & Format(i, "000")
Set r2 = r2.Offset(r1.Rows.Count)
Next
Set r1 = Nothing
Set r2 = Nothing
End Sub
めぐみんさん
感激!!
早速のご回答有難うございます。
これこそがやりたかったことです。
散々悩んだ事がいとも簡単に。
有難うございました。
これで前に進めます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MSXML で Windows-31J のキャラ...
-
Visual Basic .NET の識別子は...
-
XML、XSLTの適応エラー(IEから...
-
重複するものを消したい
-
(VB.NET)TreeViewのノード文...
-
XMLパースエラー
-
4バイトを10進数に変換する方法
-
SNMP リンクダウンとノードダ...
-
C# TreeView 効率良いノード追...
-
昔Winnyってありましたけど、あ...
-
XSLTの動作
-
XMLで要素が記述された順番に意...
-
複数のマックPCによる数値計算...
-
CPUの考え方を教えてください ...
-
XMLをXSLを使いHTMLに変換した...
-
Windowsで見かけるxmlファイル...
-
XSLTにてタグ名を取得する方法
-
ルート要素ノードが2個ある場合?
-
TreeView の初期表示について
-
Excel(2007以降)をxml形式に変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
東芝のDynabookなのですがアン...
-
特殊記号が勝手にエスケープさ...
-
あせんうぶり言語
-
Visual Basic .NET の識別子は...
-
isnan・isnf関数が「識別子が見...
-
MSXMLで使用可能な文字コードの...
-
使用できる文字の規約
-
MSXML3でerror: 'C2065 IID_IXM...
-
コメント領域のデータ部先頭っ...
-
CPUの考え方を教えてください ...
-
ルート要素ノードが2個ある場合?
-
SNMP リンクダウンとノードダ...
-
XMLで要素が記述された順番に意...
-
XML、XSLTの適応エラー(IEから...
-
C#でTreeViewのCheckBoxのサイ...
-
xmlファイルが上手にHTMLに変換...
-
昔Winnyってありましたけど、あ...
-
バッチファイルでテキストファ...
-
ノードとは
-
4バイトを10進数に変換する方法
おすすめ情報
先ほど素晴らしい回答を頂きました。有難うございました。
もう1つ教えて頂きたいのですが。
202001は2020年01月の事ですが、開始が202001(2020年01月)以外でも
(例えば202504(2025年04月)であっても)対応できるようにできますでしょうか?
どうぞ宜しくお願い致します。