- 締切済み
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で何か違うところがあるのでしょうか。わかる方ぜひ教えてください。よろしくお願いいたします!!!
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- papayuka
- ベストアンサー率45% (1388/3066)
Excel97のバグです。 シートに置いたActiveX オブジェクト(ここでは CommandButton )から 実行した場合に、クリックした時点でフォーカスが ActiveX オブジェクトに 移るためアクティブなシートやセルを見失ってしまうとか、、、 そんな感じだったように思います。 パート2のご質問も同じようにすれば良いかと思います。
- papayuka
- ベストアンサー率45% (1388/3066)
全体が見えないので何とも言えませんが、、 Set iSheet = iBook.Sheets(1) '↓ここにこれを入れるとどうでしょう。 activecell.activate Set foundCell = iSheet.Range("K:K").Find(fStr, lookat:=xlWhole)
お礼
なおりました!!!!! 本当にありがとうございます。 2日間くらい悩んでいたのですが、これで解決しました!おかげで助かりました。。 なぜこれを入れると動作するのですか?時間があれば教えてください。
お礼
パート2の方も同様にしたらなおりました! 97のバグだったのですね。 参考になりました。ありがとうございます。