遅刻の「言い訳」選手権

現在アクティブにしているワークブック名によって条件を分岐させたいのですが、下記のように記述すると「型が一致しません」とエラーが出てしまいます。これは何がおかしいのでしょうか。
(デバックモードでIf~Thenまでが黄色でマークされます)
Excel2000を使用しています。よろしくお願いします。

Dim t As Single

If ActiveWorkbook.Name="AAA.xls" Or "BBB.xls" _
Or "CCC.xls" then t=3.5

A 回答 (4件)

Option Explicit



Sub test()
Dim t As Single
Select Case ActiveWorkbook.Name
Case "AAA", "BBB", "CCC", "book1"
  t = 3.5
  MsgBox "小文字"
Case "Book1"
  MsgBox "大文字"
Case Else
  t = 4
End Select
'こんな感じでは?

'IF 文ですと
If ActiveWorkbook.Name = "AAA" Or _
  ActiveWorkbook.Name = "BBB" Or _
  ActiveWorkbook.Name = "CCC" Then
t = 3.5
End If
'VBAではこんな風
'なお 大文字と小文字を区別するようですね

Debug.Print ActiveWorkbook.Name
End Sub
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/29 13:02

すみません。

タイプミスがありました。訂正します。

× Select Case UCase$(ActiveWorbook.Name)
      ↓
○ Select Case UCase$(ActiveWorkbook.Name) 
    • good
    • 0

こんにちは。

KenKen_SP です。

>「型が一致しません」とエラーが出てしまいます。これは何がおかしいので
> しょうか。

IF の構文が違います。この点は既に回答がでてますので省略。今回の場合、
Select Case を使った方がスッキリすると思います。

大文字・小文字の問題については、代表的な対策として次の3つの方法があり
ます。オススメは 「対策3」です。

・対策1 Option Compare Text

  モジュールの先頭で「このモジュールでは大文字・小文字を区別しない」
  と宣言しておくということです。

・対策2 StrComp 関数で文字列比較のオプションを vbTextCompare にする

  With ActiveWorbook
    If StrComp(.Name, "aaa.xls", vbTextCompare) = 0 Then t = 3.5
    If StrComp(.Name, "bbb.xls", vbTextCompare) = 0 Then t = 3.5
    If StrComp(.Name, "ccc.xls", vbTextCompare) = 0 Then t = 3.5
  End With

・対策3 UCase、LCase 関数等で比較する文字列の大文字・小文字を揃えておく

  Select Case UCase$(ActiveWorbook.Name)     ’ブック名を大文字に
    Case Is = "AAA.XLS", "BBB.XLS", "CCC.XLS" ’大文字で比較
      t = 3.5
    Case Is = "EEE.XLS"
      t = 1.5
    Case Else
  End Select
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/29 13:02

ActiveWorkbook.Name="AAA.xls" Or ActiveWorkbook.Name="BBB.xls" _


Or ActiveWorkbook.Name="CCC.xls"
としてみたらどうでしょう
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/29 13:03

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


おすすめ情報