VBAでvlookup関数を下のように組みましたが、(1)でエラーが出ます。VBAに詳しい方、教えてください。
Sub VLLOKUPによる表の検索4()
Dim mykensakuchi
Dim mykensakuhan
Dim gyo As Integer
(1) mykensakuchi = Worksheets("sheet1").Range("a" & gyo).Value
mykensakuhan = Worksheets("sheet2").Range("b2:e9")
saikagyo = Worksheets("sheet1").Range("a" & Rows.Count).End(xlUp).Row
gyo = 2
For gyo = saikagyo To 1 Step -1
With Application.WorksheetFunction
Range("b:gyo").Value = .VLookup(mykensakuchi, mykensakuhan, 2, False)
End With
Next
End Sub
No.1
- 回答日時:
デバックモードで
(1) mykensakuchi = Worksheets("sheet1").Range("a" & gyo).Value
が黄色くなっていると思いますが
gyoのところにマウスを移動すると何が入っているでしょうか?
Range("b:gyo").Valueのところもおかしいと思います。
Range("b:" & gyo).Value
この回答への補足
さっそく回答いただきありがとうございました。指摘いただいた部分をなおし、以下のようなコードにしたらエラーは出なくなり、キーがマッチする場合は正しい結果が返ってくるようになりました。しかし、キーがマッチしない場合は、そこで処理がとまってしまい、(2)の箇所でエラーが出ます。VLOOKUP関数を使う上で、何かコードの記述がもれているのでしょうか?
Sub VLLOKUPによる表の検索4()
Dim mykensakuchi
Dim mykensakuhan
Dim gyo As Integer
gyo = 2
mykensakuhan = Worksheets("sheet2").Range("b2:e9")
saikagyo = Worksheets("sheet1").Range("a" & Rows.Count).End(xlUp).Row
For gyo = 2 To saikagyo Step 1
mykensakuchi = Worksheets("sheet1").Range("a" & gyo).Value
With Application.WorksheetFunction
(2) Range("b" & gyo).Value = .VLookup(mykensakuchi, mykensakuhan, 2, False)
End With
Next
End Sub
No.2ベストアンサー
- 回答日時:
こんばんは。
現在書いたコードの難易度としては、中の上から、上級です。入門レベルではVLookupのエラーを、'On Error トラップ'を捉えるのは、無理です。テキストにも以下のような使い方は出ていないはずです。
できれば、Findメソッドなどを使ったほうが分かりやすいです。(ヘルプに参考コードが出ています)
それに、コードが間違いやすい書き方です。変数は、もう少し、分かりやすく書いたほうがよいです。今回はそのままにしましたが、3語程度までにしてほうがよいです。また、Sub プロシージャ名は、特に理由はありませんが、英語かローマ字を使ってください。データ型は、難しければ、つけなくてもよいです。また、ワークシートの関数は、一般的には、Variant にしてください。
myKensakuChi こういう書き方を、キャメル型といって、入力を間違えないようにするためです。(というか、そのまま使うためには、キャメル型にせざるを得ませんでした。)
'----------------------------------------------------
Sub Search_by_VLOOKUP_4()
Dim myKensakuChi As Variant
Dim myKensakuHan As Range
Dim gyo As Long
Dim saikaGyo As Long
Dim ret As Variant
gyo = 2
saikaGyo = Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
Set myKensakuHan = Worksheets("Sheet2").Range("B2:E9")
On Error Resume Next
'今回は、下からする必要はあまりないはずです。
For gyo = saikaGyo To 1 Step -1
ret = ""
myKensakuChi = Worksheets("Sheet1").Range("A" & gyo).Value
ret = WorksheetFunction.VLookup(myKensakuChi, myKensakuHan, 2, False)
If ret <> "" Then
Worksheets("Sheet1").Range("B" & gyo).Value = ret
End If
Next
On Error GoTo 0
End Sub
Wendy02 さん
ご丁寧にコードまで記述していただき、ありがとうございました。
いただいたコードを実行したら思っているとおりに動きました。
また、コード記述の注意点等についてもご指導いただきありがとうございます。
まだまだ初心者ですが、これから勉強していきます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
May I ask you where you call ...
-
I'm going to go to… と言わな...
-
『50歳の誕生日おめでとう』を...
-
call homeとは何でしょうか?
-
職業名
-
英語で「30歳の誕生日おめでと...
-
Creampieは何故クリームパイで...
-
数学に関して
-
「ポジション」と「ポディショ...
-
「多くの方々」と「多くの方」...
-
agree withとagree that
-
must notに、「~のはずがない...
-
ご縁を外国語で言うと?
-
コンマの後のアルファベットは...
-
イタリア語
-
ゴールデンウィークの略は?GW...
-
MSNのホームからhotmailのペー...
-
ofで結ぶ複数形と単数形
-
予想外の出来事の事を英語っぽ...
-
ある会合の、「第1回」、「第2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ゴールデンウィークの略は?GW...
-
「多くの方々」と「多くの方」...
-
高3春のスタサポ αなのに、英語...
-
Creampieは何故クリームパイで...
-
メールの「様、」←様の後の句読...
-
『50歳の誕生日おめでとう』を...
-
単位の何本とかってなんて訳せ...
-
外国人が箇条書きする際、先頭...
-
ご縁を外国語で言うと?
-
章立ては、部、章、節、項、だ...
-
数学に関して
-
英語で「30歳の誕生日おめでと...
-
revert
-
ある会合の、「第1回」、「第2...
-
must notに、「~のはずがない...
-
good dayに対してなんと返すの...
-
半角のφ
-
「ポジション」と「ポディショ...
-
赤ちゃんの百日祝い 英語で何...
-
『あなたがいつも幸せの中にい...
おすすめ情報