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

解決済みの質問

エクセルVBAでデータ検索について

顧客情報の管理をしようと思っています。
(マクロ初心者です)
エクセルのシートを2つに分けて、1つは顧客情報を入力したり検索したりするシート、もう1つは入力した顧客情報を蓄積するシートです。顧客情報を蓄積シートから検索する時に、顧客番号から検索するのですが、それ以外に検索したい時や番号にローマ字が入っている時はどのようなVBAを組めばよいですか?
今参考書のとおりやっていると、
tmpInt = Sheet("入力").Range("C4").Value
でエラーが出てしまいます。
数値しか検索しないようになっているからだというのはわかるのですが、それに変わるマクロがわかりません。
教えてください。
また昨日本屋に行き、このような時に対処できる本を探しましたが見つかりませんでした。何か良いのがあれば教えてください。

投稿日時 - 2003-09-09 10:40:30

QNo.650413

すぐに回答ほしいです

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

こんにちは

#1です。ちょっと誤った事を書いてしまいましたので、訂正します。
エラーの内容を見ないと何とも言えませんが、もし「型が一致しません」と出るようですと、変数の定義で数値型をしている可能性があります。
変数の定義とは、DimやPublicであらかじめ使用する変数(この場合ですとtmpIntとなります)をこのデータ型で使用します、と決めることです。
何故このようなことをするかというとメモリ領域の節約の為です。

もし現在、Dim(若しくはPublic) tmpInt As に続くデータ型として、Integer、Long等を使用しているようでしたら、Stringに変えてみて下さい。

投稿日時 - 2003-09-09 11:39:36

お礼

ありがとうございます!!!!!
IntegerをStringに変更してみたら出来ました!!!
ホントありがとうございます。
この「教えて!goo」を初めて使ってこんなすぐに解決するなんてうれしいです。

投稿日時 - 2003-09-09 11:45:23

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

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

回答(3)

ANo.2

シート名「入力」シートのC4セルに例えば11aaa12
と入れて、下記を実行して見ました。
なお= Sheet("入力").Range・・はSheetの後に
sが必要です。
Sub test01()
tmpInt = Sheets("入力").Range("C4").Value
MsgBox tmpInt
End Sub
でエラーにはなりませんでした。
Sub test01()
Dim tmpInt As Integer
tmpInt = Sheets("入力").Range("C4").Value
MsgBox tmpInt
End Sub
では「型が一致しません」のエラーになります。
こう言う類の原因でしょうか。

投稿日時 - 2003-09-09 11:27:18

お礼

回答頂きましてありがとうございます。
別の方法で解決致しましたが、初めて「教えて!goo」を使ってみて、こんなにすぐに知らない方に教えていただけるとは感激です。どうもです。

投稿日時 - 2003-09-09 11:48:38

ANo.1

こんにちは

.Valueをとってみたらいかがでしょう?
それかtmpIntの変数を定義しているのでしたら、そこを変える必要もありますが・・・。

投稿日時 - 2003-09-09 11:03:38

あなたにオススメの質問