プロが教える店舗&オフィスのセキュリティ対策術

もしアクティブなシートの名前が、「AA」か「BB」か「CC」である場合、というIF文を書きたいのですが、

If ActiveSheet.Name = "AA" Or ActiveSheet.Name = "BB" Or ActiveSheet.Name = "CC" Then

というように書くしかないのでしょうか?
たとえば
If ActiveSheet.Name = OR("AA","BB","CC")のようなまとめて書く方法があったら教えてください。

A 回答 (8件)

Select Case ActiveSheet.Name


 Case Is = "AA", "BB", "CC"
  処理内容記述
End Select
では?
    • good
    • 0
この回答へのお礼

これはオーソドックスな方法なのでしょうね。
とてもわかりやすかったです。

"AA", "BB", "CC"以外のシートならという条件で書くなら

Select Case ActiveSheet.Name
 Case Is <> "AA", "BB", "CC"
  処理内容記述
End Select

でよいでしょうか?

お礼日時:2006/07/10 14:59

一旦変数に入れて素直に書けばよろしいかと。



  Dim 名前 As String
  名前 = ActiveSheet.Name
  If 名前 = "AA" Or 名前 = "BB" Or 名前 = "CC" Then
    MsgBox "該当"
  Else
    MsgBox "該当せず"
  End If
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2006/07/11 11:21

#3です。


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

ありがとうございました。

Case Is <> "AA", "BB", "CC" ではただしく判定してくれませんね。

お礼日時:2006/07/11 11:21

あまりトリッキーにするのは後々のメンテナンス時に


分かりにくくなるだけです。
Withを使えばコードが短くなるし処理速度も上がります。
---
With ActiveSheet
If .Name = "AA" Or _
.Name = "BB" Or _
.Name = "CC" Then
'処理
End If
End With
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/10 15:04

If IsNumeric(Application.Match(ActiveSheet.Name, Split("AA,BB,CC", ","), 0)) Then


無理矢理一行でやってますが...こういうのでも?
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2006/07/10 15:03

まあ、次のような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
    • good
    • 0
この回答へのお礼

ありがとうございます。

高度すぎて私には理解できないようです。すみません。

お礼日時:2006/07/10 15:01

If "AA:BB:CC" Like "*" & ActiveSheet.Name & "*" Then


こうゆうのもアリかな?
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/10 14:56

If InStr( 1, "/AA/BB/CC/", "/" & ActiveSheet.Name & "/" ) >= 1 Then



――とか。
あんまり直感的じゃないですが。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/10 14:55

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

このQ&Aを見た人はこんなQ&Aも見ています