• ベストアンサー

エクセル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")のようなまとめて書く方法があったら教えてください。

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

  • ベストアンサー
回答No.3

Select Case ActiveSheet.Name  Case Is = "AA", "BB", "CC"   処理内容記述 End Select では?

moooon
質問者

お礼

これはオーソドックスな方法なのでしょうね。 とてもわかりやすかったです。 "AA", "BB", "CC"以外のシートならという条件で書くなら Select Case ActiveSheet.Name  Case Is <> "AA", "BB", "CC"   処理内容記述 End Select でよいでしょうか?

その他の回答 (7)

  • NCU
  • ベストアンサー率10% (32/318)
回答No.8

一旦変数に入れて素直に書けばよろしいかと。   Dim 名前 As String   名前 = ActiveSheet.Name   If 名前 = "AA" Or 名前 = "BB" Or 名前 = "CC" Then     MsgBox "該当"   Else     MsgBox "該当せず"   End If

moooon
質問者

お礼

ありがとうございます。

回答No.7

#3です。 > "AA", "BB", "CC"以外のシートならという条件で書くなら > Case Is <> "AA", "BB", "CC" でよいでしょうか? <> の場合、私は Select Case Selection.Value  Case Is = "AA", "BB", "CC"  Case Else   処理内容記述 End Select としています。(我流ですが)

moooon
質問者

お礼

ありがとうございました。 Case Is <> "AA", "BB", "CC" ではただしく判定してくれませんね。

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.6

あまりトリッキーにするのは後々のメンテナンス時に 分かりにくくなるだけです。 Withを使えばコードが短くなるし処理速度も上がります。 --- With ActiveSheet If .Name = "AA" Or _ .Name = "BB" Or _ .Name = "CC" Then '処理 End If End With

moooon
質問者

お礼

ありがとうございます。 たしかにそうですね。とてもわかりやすいです。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.5

If IsNumeric(Application.Match(ActiveSheet.Name, Split("AA,BB,CC", ","), 0)) Then 無理矢理一行でやってますが...こういうのでも?

moooon
質問者

お礼

ありがとうございます。

noname#22222
noname#22222
回答No.4

まあ、次のような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

moooon
質問者

お礼

ありがとうございます。 高度すぎて私には理解できないようです。すみません。

noname#112806
noname#112806
回答No.2

If "AA:BB:CC" Like "*" & ActiveSheet.Name & "*" Then こうゆうのもアリかな?

moooon
質問者

お礼

ありがとうございました。 これも、思いもよらないやり方でした!

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

If InStr( 1, "/AA/BB/CC/", "/" & ActiveSheet.Name & "/" ) >= 1 Then ――とか。 あんまり直感的じゃないですが。

moooon
質問者

お礼

ありがとうございました。 思いもよらないやり方でした!

関連するQ&A