Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6309 / 13644 ツリー ←次へ | 前へ→

【45975】条件分岐教えて下さい yasu 07/1/20(土) 3:09 質問[未読]
【45976】Re:条件分岐教えて下さい ponpon 07/1/20(土) 3:19 発言[未読]
【45977】Re:条件分岐教えて下さい へっぽこ 07/1/20(土) 8:17 発言[未読]
【45978】Re:条件分岐教えて下さい ToShiYo 07/1/20(土) 9:38 発言[未読]
【45979】Re:条件分岐教えて下さい かみちゃん 07/1/20(土) 9:48 発言[未読]
【45980】Re:条件分岐教えて下さい yasu 07/1/20(土) 10:05 お礼[未読]

【45975】条件分岐教えて下さい
質問  yasu  - 07/1/20(土) 3:09 -

引用なし
パスワード
   条件分岐について教えて下さい。
sheet1がアクティブのとき
このコードを実行
sheet2がアクティブなら
このコードを実行
上記のような条件分岐は
どういうふうに書けばよいでしょうか。
初心者のためよく解りません
よろしくお願いします。
アバウトな質問ですみません

【45976】Re:条件分岐教えて下さい
発言  ponpon  - 07/1/20(土) 3:19 -

引用なし
パスワード
   ▼yasu さん:
>条件分岐について教えて下さい。
>sheet1がアクティブのとき
>このコードを実行
>sheet2がアクティブなら
>このコードを実行
>上記のような条件分岐は
>どういうふうに書けばよいでしょうか。
>初心者のためよく解りません
>よろしくお願いします。
>アバウトな質問ですみません

thisworkbookモジュールに

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  If Sh.Name = "Sheet1" Then
    MsgBox "Sheet1です"
  ElseIf Sh.Name = "Sheet2" Then
    MsgBox "Sheet2です"
  End If
End Sub

で出来ると思います。

【45977】Re:条件分岐教えて下さい
発言  へっぽこ  - 07/1/20(土) 8:17 -

引用なし
パスワード
   「シートをアクティブにした瞬間にマクロを実行」
とかで無いのでしたら標準モジュールに以下のような記述もありかと。

Sub サンプル()
 Select Case ActiveSheet.Name
 Case "Sheet1"
  MsgBox "Sheet1用の処理"
 Case "Sheet2"
  MsgBox "Sheet2用の処理"
 Case Else
  MsgBox "その他の処理"
 End Select
End Sub

【45978】Re:条件分岐教えて下さい
発言  ToShiYo  - 07/1/20(土) 9:38 -

引用なし
パスワード
   ▼yasu さん:
おはようございます。
シート数が多いときには便利かも・・・っと思います。

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
 Dim i As Integer
 For i = 1 To Sheets.Count
   If ActiveSheet.Name = "Sheet" & i Then
     MsgBox "Sheet" & i & "が選択されました"
    Exit For
   End If
 Next
End Sub

【45979】Re:条件分岐教えて下さい
発言  かみちゃん  - 07/1/20(土) 9:48 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>シート数が多いときには便利かも・・・っと思います。

シート数が多い場合は、
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
 Select Case Sh.Name
  Case "Sheet1", "Sheet2"
   MsgBox Sh.Name & "がアクティブになりました。"
  Case "Sheet3"
   MsgBox Sh.Name & "がアクティブになりました。"
  Case Else
   MsgBox "指定されたシート以外がアクティブになりました"
 End Select
End Sub
というようなこともできます。
Select Csse xxx
を使うか
If ... Then
 xxx
Else
 ooo
End If
を使うかは、条件分岐の数によって使い分けるといいと思います。
また、ヘルプも一度参照されたほうがいいかと思います。

>Private Sub Workbook_SheetActivate(ByVal Sh As Object)
> Dim i As Integer
> For i = 1 To Sheets.Count
>   If ActiveSheet.Name = "Sheet" & i Then
>     MsgBox "Sheet" & i & "が選択されました"

ここは、
   If Sh.Name = "Sheet" & i Then
     MsgBox Sh.Name & "が選択されました"
という記述でもよさそですね。

【45980】Re:条件分岐教えて下さい
お礼  yasu  - 07/1/20(土) 10:05 -

引用なし
パスワード
   ponponさん
へっぽこさん
ToShiYoさん
かみちゃんさん
いろいろな方法があるんですね
皆さんの書いていただいたコードで
これから頑張ってみます。
ありがとうございました。
解決!

6309 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free