• 締切済み

Excel2003で動作するものがExcel97で使用できません!

Excel20031で動作している下記VBAがExcel97では動作しません。問題のところのみ記述します。 Private Sub CommandButton2_Click() Dim fStr As String, foundCell As Range Dim i As Long, j As Long Dim x As Range, y As Range fStr = TextBox1.Text Set iSheet = iBook.Sheets(1) Set foundCell = iSheet.Range("K:K").Find(fStr, lookat:=xlWhole) これで何をしているかというと、「判定フォーム」シートから別のシートを呼び出し、判定フォームに入力した値を検索して、その行に書かれている値を判定フォームに取り込むという動作をしています。Excel2003では動作するのですが、Excel97では Set foundCell = iSheet.Range("K:K").Find(fStr, lookat:=xlWhole) のところで「RangeクラスのFindプロパティを取得できません」というエラーが出てしまいます。2003と97で何か違うところがあるのでしょうか。わかる方ぜひ教えてください。よろしくお願いいたします!!!

みんなの回答

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

Excel97のバグです。 シートに置いたActiveX オブジェクト(ここでは CommandButton )から 実行した場合に、クリックした時点でフォーカスが ActiveX オブジェクトに 移るためアクティブなシートやセルを見失ってしまうとか、、、 そんな感じだったように思います。 パート2のご質問も同じようにすれば良いかと思います。

TICA6
質問者

お礼

パート2の方も同様にしたらなおりました! 97のバグだったのですね。 参考になりました。ありがとうございます。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

全体が見えないので何とも言えませんが、、 Set iSheet = iBook.Sheets(1)  '↓ここにこれを入れるとどうでしょう。  activecell.activate Set foundCell = iSheet.Range("K:K").Find(fStr, lookat:=xlWhole)

TICA6
質問者

お礼

なおりました!!!!! 本当にありがとうございます。 2日間くらい悩んでいたのですが、これで解決しました!おかげで助かりました。。 なぜこれを入れると動作するのですか?時間があれば教えてください。

関連するQ&A

専門家に質問してみよう