• ベストアンサー

エクセル:VBAで月変わりで、自動でシートを選択したい

現在、「教えてGOO」でご指導をいただいて、ある簡易システム(エクセル)のVBA稼動中は「しばらくお待ちください」という表示シートを画面に固定しています。 そこに、月ごとの業務目標や忘れてはならないメッセージや季節のイラスト等を出したいので、次のようにしたいのです。 【やりたいこと】月が変わるとVBAで12枚用意したシート(つまり”ひとつき”に一枚のシート)を自動選択するようにしたいのです。(例)1月になると、「1月」、2月になると「2月」・・・というシートという風に・・・。 ご指導、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.5

>たとえば12/25を過ぎたら「12月(2)」のシートへ、 いくつかの方法がありますが・・・ Case 12: sh = "12月" If Day(Date) >= 25 Then sh = "12月(2)" End Select のように書くことも出来ます。

yastaro
質問者

お礼

hana-hana3さん、再三にわたるご指導ありがとうございました^^ 動作確認できました。今度こそ理想どおりです。 本当にありがとうございました。

その他の回答 (4)

  • kmasumi
  • ベストアンサー率21% (13/60)
回答No.4

標準モジュールの中に下記のコマンドを記入すれば、 エクセルファイル起動と同時に○○月のシートが オープンされますよ。 ただし、シート名に半角で”12月”にのように 記入してください。(実験済み) ただし、1月などは”01月”などと記入しなくては いけないかも知れません。 (分からなくてごめんなさい) Sub auto_open() Dim TukiMei As Integer TukiMei = Month(Date) Worksheets(TukiMei & "月").Select End Sub

yastaro
質問者

お礼

ご回答ありがとうございました。#5さんのコードで希望内容が解決しました。お世話になりました^^

yastaro
質問者

補足

ご回答ありがとうございます。 起動時のシート表示でなく、マクロ稼動時の指定シート表示について、たとえば、12月25日(クリスマス)を過ぎれば、”年末年始に向けての業務注意事項等”を含めた業務メッセージ(例:デイルームの正月飾りつけの準備はできていますか?)や遊び心もいれたイラストなどが入ったシート表示をイメージしています。#2さんのご回答が理想に近く、日付をからめたいのです。よろしくご指導お願いいたします。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。yastaroさん。 Wendy02です。 >月ごとの業務目標や忘れてはならないメッセージや季節のイラスト等を出したいので それらは、Excelブックに、それらのデータを抱えるのではなく、別に作っておいて、UserFormで出せばよいと思います。 >(つまり”ひとつき”に一枚のシート)を自動選択するようにしたいのです。(例)1月になると、「1月」、2月になると「2月」・・・というシートという風に・・・。 本当に、月で換わってよいのなら、#1さんのコードは似ていますが、こういうことでしょうね。 Private Sub Workbook_Open() Dim myMonth As Integer myMonth = Month(Date)   Worksheets(CStr(myMonth) & "月").Select End Sub 業務でも、それは、経理関係ばありませんね。経理関係なら、ちょっと、そういうことはありませんから。

yastaro
質問者

お礼

Wendy02さん、ありがとうございました。 ご指導内容は勉強して無駄にしないように努力します。心より感謝申し上げます。

yastaro
質問者

補足

Wendy02さん、こんにちは。いつもありがとうございます。 申し訳ありません。私のレベルではご指導いただいた”UserForm”の使い方さえ理解できませんでした。また、いただいたコードは「ブックを開いた時」というものでしょうか?マクロ稼動中にというときの画面表示に運用できませんでした。いくら私が素人にしてもこうもいつもいつもWendy02さんのご回答に追いついていけないと少し落ち込みます^^;あとおっしゃるように経理システムではありません。鋭いですね^^

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

こんな程度で良いのかな? Sub AutoSelct() Dim sh As String Select Case Month(Date) Case 1: sh = "1月" Case 2: sh = "2月" Case 3: sh = "3月" Case 4: sh = "4月" Case 5: sh = "5月" Case 6: sh = "6月" Case 7: sh = "7月" Case 8: sh = "8月" Case 9: sh = "9月" Case 10: sh = "10月" Case 11: sh = "11月" Case 12: sh = "12月" End Select Sheets(sh).Activate End Sub

yastaro
質問者

お礼

hana-hana3さん、ありがとうございます。動作を確認できました。私のイメージ通りです^^。以前からご指導いただいていますこともあわせて、感謝いたします。ありがとうございました。

yastaro
質問者

補足

申し訳ありません。あとで気がついたのですが、行事がらみで、たとえばクリスマスを過ぎたら別の業務メッセージに変えたいということがあります。つまり、月単位だけでなく、日付も絡めたいのです。たとえば12/25を過ぎたら「12月(2)」のシートへ、などと組み合わせるには?というコードについてもご指導いただけますでしょうか?よろしくお願いいたします。

回答No.1

はじめまして。 VBAのThisWorkBookのところに下記を記入すれば OKです。 Private Sub Workbook_Open() Dim lMonth As Long lMonth = Month(Date) Excel.Sheets(lMonth).Select End Sub

yastaro
質問者

お礼

はじめまして。scheimpflugさん。まずは、ご回答いただきましたことを心からありがとうございます。 ただ、いただいたコードの運用ができませんでした。おそらく私が初心者であるための理解不足のせいかと思います。お許しください。

関連するQ&A