プロが教えるわが家の防犯対策術!

Excelのセル範囲に名前をつけています。
VBAで、Worksheetに名前"牛丼"が無ければ、処理をスキップしたいのですが、存在の有無を知る方法はあるでしょうか?

if 0 < Range("牛丼").column then
... ' これはダメでした(TT)

.Worksheet.Name はシート名のようですし...

A 回答 (3件)

その1:エラー処理で対応


Sub Cells_Name4()
'エラートラップの設定
on error goto err1
'エラーが起こるかもしれない処理
Range("牛丼").Select
'エラートラップを解除
On Error GoTo 0
'エラーが起こらなかった場合の処理をして終了
msgbox("あります")
exit sub

'エラーが起こった場合の処理をして終了
err1:
msgbox("ありません")
End Sub

その2:名前を全部調べてフラグで判別

Sub Cells_Name()
Dim MyName As Name
Dim MyFlg As Boolen
MyFlg=False
'存在するかのチェック
For Each MyName In ActiveWorkbook.Names
if MyName="牛丼" then
MyFlg = True
Exit For
End If
Next
If Myflg = True Then
'存在する場合の処理
msgbox("あります")
else
'存在しない場合の処理
msgbox("ありません")
End If
End Sub
    • good
    • 2
この回答へのお礼

ありがとうございます!その1使わせていただきます!!

お礼日時:2004/10/25 23:51

名前はシートにつくのでなく、Workbookに所属するようです。

だからSheetまで追求するのは
Sub test02()
Dim n
For Each n In ActiveWorkbook.Names
MsgBox n.Name
Next
End Sub
をやって見てください。名前定義分の名前が全部出てきますか。
その上で
Sub test03()
Dim n
For Each n In ActiveWorkbook.Names
If n.Name = "牛丼" Then
MsgBox "牛丼あり"
MsgBox n
p = InStr(n, "Sheet3!")
If p <> 0 Then
MsgBox "Sheet3にあり"
End If
Exit Sub
End If
Next
MsgBox "牛丼なし"
End Sub
をやって見てください。
    • good
    • 2
この回答へのお礼

いつもありがとうございます!!ばっちりOKでした!

お礼日時:2004/10/25 23:54

#1の補足


if MyName.name="牛丼" then
だと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます! つまづくとこでした!

お礼日時:2004/10/25 23:53

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

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


このQ&Aを見た人がよく見るQ&A