• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:開いているシートをチェックする)

VBAで開いているシートをチェックする方法

このQ&Aのポイント
  • VBAを使用して、ひとつのブックの開いているシートをチェックする方法を教えてください。
  • 具体的には、「sheet1」というシートが開いている場合にはメッセージボックスで「シート1です」と表示し、「F4」を選択するようなコードを記述します。
  • また、「sheet2」が開いている場合にはメッセージボックスで「シート2です」と表示し、「G4」を選択し、それ以外のシートが開いている場合には何もしないようにします。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

[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 ..こんな感じです。

comchan
質問者

お礼

回答、ありがとうございました。 メッセージボックスを出す部分を今あるコードに置き換えて、実行したところ、 思った通りに動きました。 またまた、回答いただき、ありがとうございました。 このコードだと、シート数を増やすこともできるので、こちらをベストアンサーとさせていただきます。

その他の回答 (2)

回答No.3

> Sheets("sheet1").Activate Activateメソッドは、選択されたオブジェクトをアクティブにするためのもので、アクティブかどうか判定するものではありません。 ActiveSheet.Name で、アクティブなシートのシート名が取得できるので、これをsheet1などと比較すればいいでしょう。

comchan
質問者

お礼

>Activateメソッドは、選択されたオブジェクトをアクティブにするためのもので、アクティブかどうか判定するものではありません。 だから、シートが次々と開いてしまったのですね。 回答、ありがとうございました。

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

要求通りではないけど応用して下さい。 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 のコードは書かれていないようですし、 デバックが出るというのも何の事か分かりません。 内容が別なら別のスレッドで質問して下さい。

comchan
質問者

お礼

説明が至らずすいません。 >質問文の後半は何を言っているのか理解できませんでした。 私が書いたコードでは、sheet1,sheet2と順に開いてしまいました。 そうすると、 >If Sheets("sheet1").Activate Then >MsgBox "シート1です" >  Sheets("sheet1").range("f4").select と、シート1のワークシートのイベントで、シート1を開くと、("E4")を選択するようにしてるので、 デバックが出てしまう、ということを伝えたいと思い、記入しました。 回答、ありがとうございました。