ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

エクセルマスターコミュのVBAでのVlookupで型が一致しない

  • mixiチェック
  • このエントリーをはてなブックマークに追加
お世話になります。VBAでのユーザーフォームを作っております。
シートの値をLabelのCaptionとして取得させたいと思い、構文を記述しましたが、エラーで型が一致しないと出ます。
どうもVlookupで値を検索できていないようなので皆様のお力を拝借できませんでしょうか?

シート1のA4:B39にVlookupの検索範囲を設けております。※範囲:”Name”としております。
A列には検索値となる数字(ID)を文字列として入力済み※例)201、202・・・212
B列には取得させたいデータが数式で入力されています。※例)「=If(C4="","",C4)」と入力しセルには「エクセル太郎」と表示されています。

ユーザーフォームのテキストボックスに検索値を入力し、Exitiイベントでテキストボックスからフォーカスを移した際にLabelにB列の検索したデータを表示させたいです。

自分で書いてみたコードは以下の通り
------------------------------------
If TextBox1.Text = "" Then Exit Sub

x = Application.VLookup(TextBox1.Value, Worksheets("サンプル").Range("Name"), 1, False)
Label31.Caption = x
------------------------------------

http://myrtus21.com/blog/2007/06/vbavlookup.html
http://d.hatena.ne.jp/ogohnohito/20100321/p1
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12111031642

こちらなども参考にしてみたのですが解決できてません。

エクセルは2010です。

よろしくお願いします。



コメント(16)

> どうもVlookupで値を検索できていないようなので皆様のお力を拝借できませんでしょうか?

x の値を確認しましたか?
Debug.Print x などを入れて確認する必要があると思います。

VLOOKUPで取得したいのはB列の値だと思いますが、今はA列の値を取ってきていますね。
ブレークポイントを利用するなどしてデバッグしていますか?
A列の値とTextBox1.Valueが一致していないのでは?
>ミキスタさん
お返事ありがとうございます。
xの値は確認したところ「Empty 値」とカーソルを持っていったら表示されました。

すいませんVLOOKUPの記述はこちらの記載ミスです。正しくは
x = Application.VLookup(TextBox1.Value, Worksheets("サンプル").Range("Name"), 2, False)
と書いております。

>マリ男さん
デバックはステップインで行ったところ、エラーの内容として「型が一致しません」と表示されております。
TextBox1.ValueではなくTextBox1.Textと変えてみたのですが、同じく型が一致しませんとエラーが返ります。
TextBox1.Valueの型はどうなっていますか?
>マリ男さん
すいません。質問の意味がよくわからないです。
半角数字でテキストボックスには入力しています。
整数型とか文字列型ということでしょうか?
>>[5]
実際にどうなっているのか確認しましたか?
MsgBox TypeName(TextBox1.Value)
>マリ男さん
試してなかったです。
教えて頂いた方法で試してみます。

そのファイルが会社にあるので明日出社後にまた書き込ませてもらいます。
>>[6]
おはようございます。
TextBox1.Valueの型を確認したところ、文字列型となっております。
>>[8]
では、例えばRange("A4").Valueの型はどうなっていますか?
>>[9]
Doubleとなります。倍精度浮動小数点型となってますね。これが原因ですね。

セルの書式設定で文字列としているのにこうなるのでしょうか?
>>[10]
>セルの書式設定で文字列としているのにこうなるのでしょうか?
A列のセルの書式設定を文字列にしているということでしょうか?
もしそうであるなら、値を入力してから書式設定を変更していませんか?
そのまま、そのセルを編集していない場合、上手く設定を認識していないことが考えられますね
>>[11]
おっしゃるとおり、入力後に書式設定を変更していました。

A列の値を再入力することで無事Labelの値にB列の文字列が反映されました。
ありがとうございます。
>>[12]
解決したようで良かったです

因みに再入力されたということですが、区切り位置コマンドを使うと簡単だったかと
NameのA列を範囲選択し、区切り位置指定ウィザードを表示
ウィザードの1/3,2/3はそのまま[次へ]
3/3で列のデータ形式を「文字列」にしてから[完了]
>>[13]
なるほど。そんなウィザードがあるんですね。
参考になりました。

ありがとうございます。
>>[14]
通常の使い方は区切り位置を設定するもののはずですけどね
>>[15]
そうなんですか。色々方法はあるもんですねw

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

エクセルマスター 更新情報

エクセルマスターのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。