• ベストアンサー

Excel VBA セルの名前があるか無いかを知るには?

Excelのセル範囲に名前をつけています。 VBAで、Worksheetに名前"牛丼"が無ければ、処理をスキップしたいのですが、存在の有無を知る方法はあるでしょうか? if 0 < Range("牛丼").column then ... ' これはダメでした(TT) .Worksheet.Name はシート名のようですし...

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

  • ベストアンサー
  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

その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

xespr
質問者

お礼

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

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

名前はシートにつくのでなく、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 をやって見てください。

xespr
質問者

お礼

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

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

#1の補足 if MyName.name="牛丼" then だと思います。

xespr
質問者

お礼

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

関連するQ&A