エクセルで作成した前期(4月~9月)、後期(10月~3月)というBOOKがあります。
シートにそれぞれ月ごとの名前がついています。
下記の画像のようにセルC9に9、C4に1を入力した場合、
9・10・11・12・1のシートが選択されるマクロがありましたら教えてください。
初心者です。宜しくお願い致します。
月を入力するシートが選択されている状態で、以下のサブルーチンを実行してください。
Sub select_sheet() Dim m_sheets() As String m_start = Cells(3, 3) ' C3 m_finish = Cells(4, 3) ' C4 n = m_finish - m_start + 1 If n < 1 Then n = n + 12 End If ReDim m_sheets(n - 1) i = 0 m = m_start m_sheets(i) = m & "月" If m_start <> m_finish Then Do i = i + 1 m = m + 1 If m > 12 Then m = 1 End If m_sheets(i) = m & "月" Loop Until m = m_finish End If Sheets(m_sheets).Select End Sub
シートの名前が「1月」というようなのを前提にしています。
◆開始月・終了月は引数にした方が汎用性が出て使いやすいかと思います。
◆開始月・終了月は1~12以外にするとプログラム・ループを起こします。
ご注意ください。
Sub テスト() Call 月シート選択(Range("C3"), Range("C4")) End Sub Sub 月シート選択(開始月 As Long, 終了月 As Long) Dim 選択シート年月日 As Date Dim シート名 As String 選択シート年月日 = DateSerial(2016, 開始月, 1) Do シート名 = Month(選択シート年月日) Sheets(シート名).Select Val(シート名) = 開始月 If Month(選択シート年月日) = 終了月 Then Exit Do 選択シート年月日 = DateAdd("m", 1, 選択シート年月日) Loop End Sub
コメント(1件)
一点確認したいので、コメントします。
。
>前期(4月~9月)、後期(10月~3月)というBOOKがあります。
もしかして、
前期.xls にシートが4月~9月で6シート
後期.xls にシートが10月~3月で6シート
みたいに、ブックが2つなんてことはないですよね。
・
一つのブックに
範囲指定用のシートと
1から12月のシート
ですよね。
・
勘違いだったらスルーしてください。少し気になったのでコメントで失礼しました。