Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6827 / 13644 ツリー ←次へ | 前へ→

【42882】VlookUpについて くみたん 06/9/24(日) 17:20 質問[未読]
【42887】Re:VlookUpについて Kein 06/9/24(日) 17:44 回答[未読]
【42888】Re:VlookUpについて かみちゃん 06/9/24(日) 17:53 発言[未読]
【42897】Re:VlookUpについて くみたん 06/9/24(日) 22:22 お礼[未読]

【42882】VlookUpについて
質問  くみたん  - 06/9/24(日) 17:20 -

引用なし
パスワード
   フォームのテキストボックスにVlookup関数を設定し、商品コードを基に商品名を
表示しようとしていますが、実行時エラーで強制終了してしまいます。どなたか
助けてください。

Private Sub 設定_change()
Dim aa As Range
Worksheets("商品マスタ").Select
Set aa = Application.WorksheetFunction.VlookUp _
(商品名検索.商品コード.Value,Worksheets("商品マスタ").Range("J3:K65536") _
, 2, False)
商品名検索.商品名.Value = aa
End Sub

実行エラー"1004" "WorksheetFunctionクラスのVlookupプロパティが取得できません"で
エラー終了します。お願いします。

【42887】Re:VlookUpについて
回答  Kein  - 06/9/24(日) 17:44 -

引用なし
パスワード
   VLOOKUP関数を使うなら、戻り値は Rangeオブジェクト にはなりません。↓
--------------------------------------------------------------
ヘルプから抜粋

指定された 範囲 の左端の列で特定の値を検索し、範囲 内の対応するセルの値を
返します。
--------------------------------------------------------------
なので 変数の型 も Setステートメント の使用も間違いということになります。
>商品名検索.商品名.Value
が何なのか全く不明ですが、仮にWorksheets("商品マスタ")の
"商品コード"と名前を定義したセル範囲であるとすれば・・

Private Sub 設定_change()
  Dim MyV As Variant

  With Worksheets("商品マスタ")
   MyV = Application _
   .VlookUp(.Range("商品コード").Value, .Range("J3:K65536"), _
    2, False)
  End With
  If IsError(MyV) Then
   MsgBox "検索値は見つかりません", 48
  Else
   MsgBox MyV
  End If
End Sub

ぐらいかな・・。

【42888】Re:VlookUpについて
発言  かみちゃん  - 06/9/24(日) 17:53 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>フォームのテキストボックスにVlookup関数を設定し、商品コードを基に商品名を
>表示しようとしています

Keinさんからコメントがついていますが、変数aaの使い方がおかしいです。
また、VLOOKUP関数の第2引数の左端列に第1引数の値がなかった場合、
ご提示のエラーになります。
ワークシート関数でした場合#N/A!になる事象です。

Private Sub 設定_change()
 Dim aa As String
 
 Worksheets("商品マスタ").Select
 aa = ""
 On Error Resume Next
 aa = Application.WorksheetFunction.VLookup _
  (商品名検索.商品コード.Value, Worksheets("商品マスタ").Range("J3:K65536") _
   , 2, False)
 If aa <> "" Then
  商品名検索.商品名.Value = aa
 Else
  MsgBox "商品コードが見つかりません"
 End If
End Sub

VLOOKUP関数を使わなくてもFindメソッドでもできると思います。

Private Sub 設定_change()
 Dim aa As Range
 
 Worksheets("商品マスタ").Select
 With Range("J3:K65536")
  Set aa = .Find(商品名検索.商品コード.Value, LookIn:=xlValues, LookAt:=xlWhole)
  If Not aa Is Nothing Then
   商品名検索.商品名.Value = aa.Offset(, 1).Value
  Else
   MsgBox "商品コードが見つかりません"
  End If
 End With
End Sub

【42897】Re:VlookUpについて
お礼  くみたん  - 06/9/24(日) 22:22 -

引用なし
パスワード
   Keinさん、かみちゃんさん返信が遅くなってすみません。
それから、ありがとうございました。
かみちゃんが指摘したように、最初はFindメソッドを使って問題なかったのですが、
VlookUp関数にチャレンジしてみたくなりお手数をかけることになってしまいました。
結果としてお二人の方法で問題は解決しました。
また、解らないことがあったら教えてください。ありがとうございました。

6827 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free