- ベストアンサー
VBAで開いているシートをチェックする方法
- VBAを使用して、ひとつのブックの開いているシートをチェックする方法を教えてください。
- 具体的には、「sheet1」というシートが開いている場合にはメッセージボックスで「シート1です」と表示し、「F4」を選択するようなコードを記述します。
- また、「sheet2」が開いている場合にはメッセージボックスで「シート2です」と表示し、「G4」を選択し、それ以外のシートが開いている場合には何もしないようにします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
[Select Case ステートメント]を使ってみてください。 Sub test() With ActiveSheet '念の為小文字比較 Select Case LCase(.Name) Case "sheet1" MsgBox .Name & "です。" .Range("F4").Select Case "sheet2" .Range("G4").Select MsgBox .Name & "です。" End Select End With End Sub ..こんな感じです。
その他の回答 (2)
- m-take0220
- ベストアンサー率60% (477/782)
> Sheets("sheet1").Activate Activateメソッドは、選択されたオブジェクトをアクティブにするためのもので、アクティブかどうか判定するものではありません。 ActiveSheet.Name で、アクティブなシートのシート名が取得できるので、これをsheet1などと比較すればいいでしょう。
お礼
>Activateメソッドは、選択されたオブジェクトをアクティブにするためのもので、アクティブかどうか判定するものではありません。 だから、シートが次々と開いてしまったのですね。 回答、ありがとうございました。
- MARU4812
- ベストアンサー率43% (196/452)
要求通りではないけど応用して下さい。 Dim SheetName As String SheetName = ThisWorkbook.ActiveSheet.Name Select Case SheetName Case "Sheet1", "Sheet2" MsgBox SheetName & "です" Case "Sheet3" Case Else MsgBox "プログラムされていません。:" & SheetName End Select 文字列比較なのでシート名と完全一致しないと 実行されません。 質問文の後半は何を言っているのか理解できませんでした。 ショートカットと結びつける話でしょうか? Worksheet_Activate のコードは書かれていないようですし、 デバックが出るというのも何の事か分かりません。 内容が別なら別のスレッドで質問して下さい。
お礼
説明が至らずすいません。 >質問文の後半は何を言っているのか理解できませんでした。 私が書いたコードでは、sheet1,sheet2と順に開いてしまいました。 そうすると、 >If Sheets("sheet1").Activate Then >MsgBox "シート1です" > Sheets("sheet1").range("f4").select と、シート1のワークシートのイベントで、シート1を開くと、("E4")を選択するようにしてるので、 デバックが出てしまう、ということを伝えたいと思い、記入しました。 回答、ありがとうございました。
お礼
回答、ありがとうございました。 メッセージボックスを出す部分を今あるコードに置き換えて、実行したところ、 思った通りに動きました。 またまた、回答いただき、ありがとうございました。 このコードだと、シート数を増やすこともできるので、こちらをベストアンサーとさせていただきます。