人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBAについての質問です。

エクセルで作成した前期(4月?9月)、後期(10月?3月)というBOOKがあります。
シートにそれぞれ月ごとの名前がついています。

下記の画像のようにセルC9に9、C4に1を入力した場合、
9・10・11・12・1のシートが選択されるマクロがありましたら教えてください。
初心者です。宜しくお願い致します。


1478330882
●拡大する

●質問者: kokki0201
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

質問者から

セルC9ではなくC3です。


1 ● a-kuma3

月を入力するシートが選択されている状態で、以下のサブルーチンを実行してください。

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月」というようなのを前提にしています。


2 ● jccrh1

◆開始月・終了月は引数にした方が汎用性が出て使いやすいかと思います。
◆開始月・終了月は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
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ