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

あるワークシートのセルに、"_1", "_2","_3","_10"のように名前をつけています。
"_8"が見つからなかったら、ループで番号を上げていき、"_10"にたどりつくようにしたいんですが、"_8"というセルが見つからなかった時の判定方法がわかりません。

On error ではない処理を使いたいのですが、

If Range("_8") = Empty Then

では実行時エラー1004 "アプリケーション定義またはオブジェクト定義のエラーです"

と出ます。

Rangeオブジェクトがemptyになるわけではないんでしょうか?
よい方法があれば、教えてください。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/02/11 08:06

これがズバリでは??


定義されている名前のリスト作れマス、、、

Excel VBA セルの名前があるか無いかを知るには?
投稿日時:2004/10/25 19:43
http://oshiete.goo.ne.jp/qa/1056062.html
    • good
    • 0

定義されていないものは参照できない、参照すれば実行時エラーになる。


コレを避けるには、定義されている名前の一覧を作成し、これで確認できたものだけが参照できる。

2005年07月10日(日) 9時24分
定義済み名前一覧を作成する
http://www.relief.jp/itnote/archives/001367.php
    • good
    • 0

コレでは?



Excel: SetステートメントでRangeオブジェクトに名前付きセルを指定したい
http://qanda.rakuten.ne.jp/qa790276.html
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2013/02/10 16:03

If Range("_8") = Empty Then・・・セル位置を指定してないのでダメです。




If Range("F1").Value <> "_8" Then

If Range("F1").Text <> "_8" Then


お試し下さい。
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2013/02/10 15:58

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

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


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