特定のシートをアクティブにするVBAについてなのですが、シート名は【】ごとにあります。↓
【1.1】 【1.2】 【1.3】 【2.1】 【2.2】 【2.3】 【3.1】 【3.2】 【3.3】…続く
左の数字が日付で変わっていきます。
右の数字は業務上の24時間を3つに区切ったものです。
1は 7時から 15時
2は 15時から22時
3は 22時から 7時
それでブックを開いた時に、今の日にちと時間から、特定のシートをアクティブにしたいのですが、難しくてわかりません。
例えば10日の8時にブックを開いたら
【10.1】のシートをアクティブにする。
このVBAを解るかた教えていただけないでしょうか。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
>一部の文字で抽出したファイル名で更新日時を表示するVBA
>の回答の中にあるコードの中に、WindFallerさんのご回答くださったコードを入れるとしたら、どうなるでしょうか。
『特定のシートをAuto_OpenでアクティブにするVBA』
ふたつのマクロをあわせることは可能でも、このご質問のタイトルは、Auto_Open と書かれていました。
簡単なご質問になっていますが、それは、この質問の最初の時点から、確認しなければならないです。まさか、インスタンスを設けるという高度なワザをリクエストされているとは思えません。
単に、ブックを開いて、その開くシートをどこに決めるというのは、Auto_Open ではありません。Auto_Openは、通常、マクロを置いたブックです。ファイルを開くマクロの後に続くのですから、別の名前にしなくてはなりません。名前を変えてください。
なお、更新日時を取得する自体は、外部のオブジェクトを使わないで、プロパテイから取れます。
http://oshiete.goo.ne.jp/qa/9107027.html
Sub openTargetFile()
・
・
・
If lngSave = vbYes Then
Set myBook =Workbooks.Open( findPath & getName)
Call mySheetOpen 'Auto_Open を別の名前にした。 ここを変える*
Else
MsgBox "終了します。", vbExclamation, "更新時刻"
Exit Sub
End If
getName = Dir()
Loop
End Sub
Sub mySheetOpen()
・
・
・
Set sh = ActiveWorkbook.Worksheets(sName) 'ThisWorkbook をActiveWorkbookに書き換え。**
End Sub
本当に丁寧なご回答ありがとうございます。私の質問の仕方が悪かったです。オートオープンと言ったのは、コードで他のブックを開いたら先で、シートを選択させたいという意図がありました。また、分からなかったら質問を出直します。
No.3
- 回答日時:
#2の補足:
'1日のチェック*
If Day(myTime - TimeSerial(7, 0, 0)) - Day(myTime) > 25 Then
If MsgBox("前月" & Month(Date - 1) & "に該当するようですが、よろしいですか?", vbQuestion + vbOKCancel) = vbCancel Then
Exit Sub
End If
End If
[前月○に該当するようですが、そのまま続行しますか?]
のほうが良いでしょうね。
MakingSheets のマクロは、シートのフォーマットをコピーするようなものにすべきでした。
リクエストにしたがって、修正します。
いろいろ注文、申し訳ありません。
私の過去の質問の中の
一部の文字で抽出したファイル名で更新日時を表示するVBA
の回答の中にあるコードの中に、WindFallerさんのご回答くださったコードを入れるとしたら、どうなるでしょうか。
No.2
- 回答日時:
こんばんは。
しばらく考えてみました。
私も、以前、変則的(日をまたぐ)な区切りを作ったことがありますが、今回の1,2,3(通常、遅出、夜勤) の区切り方も、実際のシートを開けさせるのは、予想よりも遥かに難しいです。このマクロは、「月」がどこにも書かれていないのに、シートだけで、何月か推定させるわけです。
例えば、12月なのか1月なのか、たぶん、どこかにはあるはずですが、月初めの1日の早朝(7時前)などでは、前月の末日に該当し、ブックが違う可能性があります。そのままでは、その月の末日、もしくは30日に飛んでいってしまいますが、月が違う可能性があるのです。
さて、どのように処理してよいのか、かなり考えてみましたが、小一時間、あれこれいじってみました。1日の7時の前の時間を例外として作らなければならないで、臨時で、月初めの1日のチェックを対話型にしました。(これ自体、感心しませんが、やむをえません。)
細心の注意を払ったつもりですが、ミスがありましたら、ご指摘ください。(しばらくは気がつかないかもしれませんが)
以下、Auto_Openと、その月のシートを作るMakingSheetsというマクロも加えてみました。(現在12月ですが、今、1月を作る時は、InputBox に、該当する年・月を入力してください。)
'//
Sub Auto_Open()
Dim myTime As Double
Dim sName As String
Dim buf As Variant
Dim sh As Worksheet
myTime = Now
' bfore 7 '7時前は、前日の3に該当
If myTime < Date + TimeSerial(7, 0, 0) Then
sName = Day(Date - 1) & "." & 3
'7-15
ElseIf myTime >= Date + TimeSerial(7, 0, 0) And myTime < Date + TimeSerial(15, 0, 0) Then
sName = Day(Date) & "." & 1
'15-22
ElseIf myTime >= Date + TimeSerial(15, 0, 0) And myTime < Date + TimeSerial(22, 0, 0) Then
sName = Day(Date) & "." & 2
'22
ElseIf myTime >= Date + TimeSerial(22, 0, 0) And myTime < Date + 1 + TimeSerial(0, 0, 0) Then
sName = Day(Date) & "." & 3
End If
On Error Resume Next
Set sh = ThisWorkbook.Worksheets(sName)
'1日のチェック*
If Day(myTime - TimeSerial(7, 0, 0)) - Day(myTime) > 25 Then
If MsgBox("前月" & Month(Date - 1) & "に該当するようですが、よろしいですか?", vbQuestion + vbOKCancel) = vbCancel Then
Exit Sub
End If
End If
If Err.Number > 0 Then
MsgBox "該当のシートが見つかりません。", vbExclamation
Else
sh.Select
End If
On Error GoTo 0
End Sub
Sub MakingSheets()
'シートを作るマクロ
Dim yr As Variant
Dim mon As Variant
Dim totalshCount As Long
Dim i As Long
Dim j As Long
Dim n As Long
yr = Year(Date)
yr = Application.InputBox("年数を入力してください", "年は?", yr)
If VarType(yr) = vbBoolean Then Exit Sub
mon = Month(Date)
mon = Application.InputBox("月数を入力してください", "月は?", mon)
If VarType(mon) = vbBoolean Then Exit Sub
With ThisWorkbook
totalshCount = Day(DateSerial(yr, mon + 1, 0))
Application.ScreenUpdating = False
For i = 1 To totalshCount
For j = 1 To 3
n = n + 1
If n > .Worksheets.Count Then
.Worksheets.Add after:=.Worksheets(.Worksheets.Count)
End If
On Error Resume Next
DoEvents
.Worksheets(n).Name = i & "." & j
On Error GoTo 0
Next j
Next i
End With
Application.ScreenUpdating = True
MsgBox "終了しました。", vbInformation
End Sub
'///
大変丁寧な回答ありがとうございます。0時をまたぐ日付のこと察していただきありがとうございます。
動作は確認できたのでベストアンサーはさせていただきます。ただ、私の方で作っているコードにどう挿入したら動くかが問題で、試行錯誤しています。コードが長すぎてここに記述できなくて。しばらくお待ちください。
No.1
- 回答日時:
マクロは苦手なので、もっと良いものが出ると思いますが。
Sub test()
' 今日の日付と指定時間でシートを開きます
Dim niti As String
Dim tv As String
Dim DateSheet As String
' 今日の日付けを取得
niti = Day(Date)
' 時間区分を数字に変換(時間が重ならないように1秒ずらす)
Select Case Time
Case TimeValue("07:00:01") To TimeValue("15:00:00")
tv = "1"
Case TimeValue("15:00:01") To TimeValue("22:00:00")
tv = "2"
Case Else
tv = "3"
End Select
' シート名を指定
DateSheet = "【" & niti & "." & tv & "】"
' シート名で指定したシートをアクティブにする
Worksheets(DateSheet).Activate
End Sub
これを試してみて、Auto_Openにしてみては。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
【お題】引っかけ問題(締め切り10月27日(日)23時)
【大喜利】 「日本で一番高い山は富士山……ですが!」から始まった、それは当てられるわけ無いだろ!と思ったクイズの問題
-
自分のセンスや笑いの好みに影響を受けた作品を教えて
子どもの頃に読んだ漫画などが その後の笑いの好みや自分自身のユーモアのセンスに影響することがあると思いますが、 「この作品に影響受けてるな~!」というものがあれば教えてください。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
エクセルファイルを開く時、常に同じシートから開くようにするには?
Windows Vista・XP
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
マクロを複数シートに実行する...
-
Excelで,特定のシートを開いた...
-
エクセル・複数のシートを一度...
-
エクセルでシートの並び替えで...
-
【 Excel】シートの見出しに自...
-
複数シートの保護・解除
-
EXCELでマクロを使わずに図形の...
-
エクセルを開いたとき常に同じ...
-
EXCELのエラー
-
ExcelのSheetに作られたMacro1...
-
Excelのマクロの呼び出し元を知...
-
エクセル 行の表示非表示のマ...
-
EXCELの起動時に常に同じ...
-
Excelマクロ(Range)につ...
-
Excel:複数シートから条件に合...
-
マクロ 各シートの決められた位...
-
エクセルで、マクロボタンの表...
-
エクセルWEBクエリで毎回変...
-
EXCELでワークシートを開いたら...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
マクロを複数シートに実行する...
-
【 Excel】シートの見出しに自...
-
エクセルを開いたとき常に同じ...
-
エクセルでシートの並び替えで...
-
EXCELでマクロを使わずに図形の...
-
EXCELでワークシートを開いたら...
-
マクロを特定の複数シートで実...
-
EXCELの起動時に常に同じ...
-
VBA シート名を先月の名前に...
-
マクロ 各シートの決められた位...
-
EXCELのエラー
-
VBAで条件によってシート見出し...
-
エクセル・複数のシートを一度...
-
エクセルで回数をカウントする...
-
Excelのマクロの呼び出し元を知...
-
エクセルで複数のSheetを一括フ...
-
シートを保護した時でも並べ替...
-
メッセージボックスでシート名...
-
エクセルで、マクロボタンの表...
おすすめ情報