• 締切済み

excel vba 名前付きセルが存在しないとき

あるワークシートのセルに、"_1", "_2","_3","_10"のように名前をつけています。 "_8"が見つからなかったら、ループで番号を上げていき、"_10"にたどりつくようにしたいんですが、"_8"というセルが見つからなかった時の判定方法がわかりません。 On error ではない処理を使いたいのですが、 If Range("_8") = Empty Then では実行時エラー1004 "アプリケーション定義またはオブジェクト定義のエラーです" と出ます。 Rangeオブジェクトがemptyになるわけではないんでしょうか? よい方法があれば、教えてください。

みんなの回答

回答No.5

こんにちは。 >Rangeオブジェクトがemptyになるわけではないんでしょうか? Range のEmpty というのは、何も入っていない、Variant型の空の意味で、Value値では、""(長さ0の文字列)と同等です。そのコードは、存在しないものを探しているのですから、エラーそのものになります。 しかし、ある程度熟練したVBAプログラマーは、名前定義を使いません。それは、VBAでは見失うことがあるのです。見失ってしまうと、VBAでは、取り出せなくなるからです。理由ははっきりしませんが、バグの一種があります。 以下は、あまり実用的ではない内容ですが、レベルとしては、VBAの学習をひと通り終わったレベルです。 '// Sub Test1() Dim i As Long Dim cnt As Long Dim dum As Variant 'ダミー cnt = 10 '探す最後の名前 For i = 1 To cnt    On Error Resume Next    dum = ActiveWorkbook.Names("_" & i)    If dum = Empty Then MsgBox "Missing Name '_" & i & " '"    dum = Empty Next i End Sub

kusisters
質問者

お礼

なるほどなるほど、わかりました。どうもありがとうございました!

回答No.4

これがズバリでは?? 定義されている名前のリスト作れマス、、、 Excel VBA セルの名前があるか無いかを知るには? 投稿日時:2004/10/25 19:43 http://okwave.jp/qa/q1056062.html

回答No.3

定義されていないものは参照できない、参照すれば実行時エラーになる。 コレを避けるには、定義されている名前の一覧を作成し、これで確認できたものだけが参照できる。 2005年07月10日(日) 9時24分 定義済み名前一覧を作成する http://www.relief.jp/itnote/archives/001367.php

回答No.2

コレでは? Excel: SetステートメントでRangeオブジェクトに名前付きセルを指定したい http://qanda.rakuten.ne.jp/qa790276.html

kusisters
質問者

お礼

ありがとうございました。 上記のリンクも参照しました。 range("_1")で参照できる(セルが見つかる)ことは確認しましたが、range("_8")というセルが存在しないとき、存在の有無を判定する良い方法はないのかなー、と思ったわけなんです。

noname#256148
noname#256148
回答No.1

If Range("_8") = Empty Then・・・セル位置を指定してないのでダメです。 If Range("F1").Value <> "_8" Then If Range("F1").Text <> "_8" Then お試し下さい。

kusisters
質問者

お礼

ありがとうございました。 でも、セル内容をチェックしたいわけではなくて、"_8"という名前のセルを探しに行きたいんです...

関連するQ&A