一回も披露したことのない豆知識

エクセルの勉強をしていて行き詰まってしまったので相談させて下さい。

現在アクティブになっているシートによって処理を変えるVBAを作っています。
IFを使うことになるかと思うのですが”シート1がアクティブの場合”という
条件をうまく付けることが出来ません。

If "アクティブシートがsheet1" Then
<<指定の処理>>
ElseIf"アクティブシートがsheet2"Then
<<指定の処理>>
Else
EndIf

うまく説明できず申し訳ありませんが条件式の" "の中に入るコードを教えて下さい。
不足部分については補足させて頂きますのでよろしくお願い致します。

A 回答 (3件)

「sheet1」というのがシート名なら



If ActiveSheet.Name = "sheet1" Then

みたいな感じ。
    • good
    • 0
この回答へのお礼

自分で考えたのは".Name"の部分が足りなかったようです。
ご報告が遅くなってしまいましたが上手くできました。
ありがとうございます。

お礼日時:2009/10/03 03:22

VBAではシートの区別はどういう方法があるか勉強が必要。


(1)シートの名前
(2)ActiveSheet
(3)シートのIndex番号
(4)Next、Previous
(5)その他
(3)はシートタブの位置を動かすと変わるので、データ内容で考えるときは、使いにくい。
残るはシートの名前。
ーーーーー

シートタブをクリックするとそのシートによって処理を変える例。
ThisWorkbookのWorkbook_SheetActivateイベント利用。
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Select Case Sh.Name
Case "Sheet1"
MsgBox "Sheet1"
Sh.Cells(10, "A") = 1
Case "Sheet2"
MsgBox "Sheet2"
Sh.Cells(10, "A") = 2
Case Else
MsgBox "その他"
End Select
End Sub
    • good
    • 0
この回答へのお礼

分厚い本とネットで勉強していますが調べが足りなかったようです。
詳しく説明していただいてありがとうございます。
ただ、申し訳ありませんがポイントは答えて頂いた順にさせて下さい。
参考になる回答ばかりで甲乙付け難いので。

お礼日時:2009/10/03 03:28

select case を使用する方法です



Select Case ActiveSheet.Name 'シート名が
Case "sheet1" 'sheet1の時
'<<指定の処理>>
Case "sheet2" 'sheet2の時
'<<指定の処理>>
Else '指定されたもの以外のとき
'<<指定の処理>>
End Select

参考まで
    • good
    • 0
この回答へのお礼

ありがとうございます。
Caseを使う方法もあるのですね。

お礼日時:2009/10/03 03:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!