こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルマクロ・Cells.Find のエラー

 
VBA初心者です。

ファイルA の C列 に入力されているデータが ファイルB
に含まれているかどうか検索するマクロを Cells.Find
を使って作ろうとしています。

データがファイルBに存在する場合は問題ありませんが存在
していない場合エラーが出て止まってしまいます。
ヘルプを見ると「セルが見つからなかった場合は、Nothingを返します」
と書かれていますが、どうもNothingとは返ってきません。

このエラーを回避する方法を教えてください。



例えばこんなマクロを組みました。


 For tate = 0 To 19

   Windows("ファイルA.xls").Activate
   Range("C1").Offset(tate, 0).Select
   データ = Range("C1").Offset(tate, 0)

   Windows("ファイルB.xls").Activate

   Cells.Find(データ, MatchCase:=False).Activate

 Next tate


例えば最後の2行を

   結果 = Cells.Find(What:=ISISDate, MatchCase:=False).Activate
     MsgBox (結果)

 Next tate

とするとデータが含まれている場合は「True」と返ってきますが、
含まれていない場合は MsgBox が表示される前にエラーとなってしまいます。

とりあえずこのエラーを回避する方法をご存知でしたらお教えください。


 

投稿日時 - 2004-09-15 13:39:49

QNo.1002765

すぐに回答ほしいです

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

No.1です。

>見つからなかった場合の処理を組むことは可能なのでしょうか?
Notで否定しているのだから、外せば逆になりますよ。


If rg Is Nothing Then
  (見つからなかった場合の処理)
Else
  (見つかった場合の処理)
End If

投稿日時 - 2004-09-15 15:06:33

お礼

 
間に合いませんでした。。。

先程補足書いてから気がつきました。
ハッキリ言って私の脳ミソ腐ってますね。。。

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

投稿日時 - 2004-09-15 15:10:31

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

こんにちは。maruru01です。

Nothingなのに、Activateしようとするからエラーになるのです。
いったんRangeオブジェクトにセットして下さい。


Dim rg As Range

~省略~

Set rg = Cells.Find(データ, MatchCase:=False)
If Not rg Is Nothing Then
  (見つかった場合の処理)
End If


Findのヘルプの使用例に載っていますよ。

投稿日時 - 2004-09-15 13:57:43

補足

 
ありがとうございました。
初心者なのであまりよく分からないのですが、動きました。

せっかくなのでもう一つ教えてください。
見つかった場合の処理はお教え下さった通りで出来ましたが
見つからなかった場合の処理を組むことは可能なのでしょうか?

甘えてばかりで申し訳ありません。
初心者ということで大目に見てください。。。

投稿日時 - 2004-09-15 14:40:34

お礼

 
できました。
本当にありがとうございました。

投稿日時 - 2004-09-15 15:08:58

あなたにオススメの質問