- ベストアンサー
エクセルVBAの記述方法について
もしアクティブなシートの名前が、「AA」か「BB」か「CC」である場合、というIF文を書きたいのですが、 If ActiveSheet.Name = "AA" Or ActiveSheet.Name = "BB" Or ActiveSheet.Name = "CC" Then というように書くしかないのでしょうか? たとえば If ActiveSheet.Name = OR("AA","BB","CC")のようなまとめて書く方法があったら教えてください。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
Select Case ActiveSheet.Name Case Is = "AA", "BB", "CC" 処理内容記述 End Select では?
その他の回答 (7)
- NCU
- ベストアンサー率10% (32/318)
一旦変数に入れて素直に書けばよろしいかと。 Dim 名前 As String 名前 = ActiveSheet.Name If 名前 = "AA" Or 名前 = "BB" Or 名前 = "CC" Then MsgBox "該当" Else MsgBox "該当せず" End If
お礼
ありがとうございます。
- misatoanna
- ベストアンサー率58% (528/896)
#3です。 > "AA", "BB", "CC"以外のシートならという条件で書くなら > Case Is <> "AA", "BB", "CC" でよいでしょうか? <> の場合、私は Select Case Selection.Value Case Is = "AA", "BB", "CC" Case Else 処理内容記述 End Select としています。(我流ですが)
お礼
ありがとうございました。 Case Is <> "AA", "BB", "CC" ではただしく判定してくれませんね。
- o_chi_chi
- ベストアンサー率45% (131/287)
あまりトリッキーにするのは後々のメンテナンス時に 分かりにくくなるだけです。 Withを使えばコードが短くなるし処理速度も上がります。 --- With ActiveSheet If .Name = "AA" Or _ .Name = "BB" Or _ .Name = "CC" Then '処理 End If End With
お礼
ありがとうございます。 たしかにそうですね。とてもわかりやすいです。
- KenKen_SP
- ベストアンサー率62% (785/1258)
If IsNumeric(Application.Match(ActiveSheet.Name, Split("AA,BB,CC", ","), 0)) Then 無理矢理一行でやってますが...こういうのでも?
お礼
ありがとうございます。
まあ、次のようなInclude関数を使えば多少はましかもです。 関数のオーバーヘッドを考慮しつつというところだと思います。 昔は、小さいアプリケーションではInclude関数も使っていました。 今は、余りにも小手先の芸当なので止めています。 Private Sub CommandButton1_Click() If Include(ActiveSheet.Name, "AA,BB,CC") Then MsgBox "" End If End Sub Public Function Include(ByVal Text1 As String, _ ByVal Text2 As String, _ Optional ByVal Separator As String = ",") As Boolean Include = InStr(1, Text2 & Separator, Text1 & Separator, vbTextCompare) End Function If Include(ActiveSheet.Name, "AA/BB/CC", "/") Then
お礼
ありがとうございます。 高度すぎて私には理解できないようです。すみません。
If "AA:BB:CC" Like "*" & ActiveSheet.Name & "*" Then こうゆうのもアリかな?
お礼
ありがとうございました。 これも、思いもよらないやり方でした!
- osamuy
- ベストアンサー率42% (1231/2878)
If InStr( 1, "/AA/BB/CC/", "/" & ActiveSheet.Name & "/" ) >= 1 Then ――とか。 あんまり直感的じゃないですが。
お礼
ありがとうございました。 思いもよらないやり方でした!
お礼
これはオーソドックスな方法なのでしょうね。 とてもわかりやすかったです。 "AA", "BB", "CC"以外のシートならという条件で書くなら Select Case ActiveSheet.Name Case Is <> "AA", "BB", "CC" 処理内容記述 End Select でよいでしょうか?