- ベストアンサー
Application.WorksheetFunction.VLookupがどうしても出来ないです。教えて下さい。
前回も問い合わせさせていただいていますが 少し私の言っている問い合わせと意味合いがちがうのでもう一度投稿させていただきます。 A B C D 1 15001 15001 A社 本店 2 1500101 15001 01 A社 A店 3 15002 15002 B社 本店 4 1500202 15002 02 B社 B店 上記のようにSheet1があります。 A列のセルは 式で B & CでSETしています。 ユーザーフォームのTextbox1は得意先コード textbox2は支店コード textbox3に店名 textbox1とtextbox2を入力してコマンドボタンを押すとtextbox3に店名をsetすると言うことがしたいんですが支店コードの入っている店名はひっぱってくるのですが 支店コードのないものの店名が表示されません。 Private Sub CommandButton1_Click() On Error GoTo ExitER Set ADR = Worksheets("sheet1").Range("A1:D4") TextBox3 = Application.WorksheetFunction.VLookup(TextBox1 & TextBox2, ADR, 4, False) On Error GoTo 0 Exit Sub ExitER: MsgBox "一致するコードがありません" On Error GoTo 0 End Sub エラーの部分は前回の質問の時に教えて頂いたものです。 どうしてもわからないのでお分かりの方お教えください。
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- EXCEL ユーザーフォームの2つのtextboxの値で検索
久しぶりの投稿です。 今、EXCELのユーザーフォームのVBAで行き詰ってます。 お分かりの方宜しくお願いいたします。 まず、EXCELのシートが下の様にあります。 A B C D 1 得+支店 得意先コード 支店コード 得意先名 2 1030401 10304 01 XXX乳業 3 20000 20000 XXX商事本店 4 2000001 20000 01 XXX商事 A支店 (AのセルはB&Cで) textbox1に得意先コード textbox2に支店コードを入力してコマンドボタンを押したら textbox3に得意先名を表示させるという事がしたいのですが 支店コードが入ってる時はよいのですが入ってない時 実行時エラー’1004’ WorksheetFunctionクラスのVLookupプロパティを取得出来ません。 となってしまいます。 VBAは下の様になってます Private Sub CommandButton1_Click() Set ADR = Worksheets("sheet1").Range("A2:C4") TextBox3 = Application.WorksheetFunction.VLookup(TextBox1 + TextBox2, ADR, 4, False) End Sub
- ベストアンサー
- Visual Basic
- エクセルでフォームを作成しています。(VBA)
エクセルでフォームを作成しています。(VBA) フォームAで作成してあるリストボックスから選択して 取得した番号を フォームBにもってきて、その番号をもとにVLOOKUPで ほかのテキストボックスに値を持ってこようとしている のですがうまくいきません。 フォームAのリストボックスにはsheet1の名簿が 表示されています。 クリックで選択した名簿番号を取得して、フォームBにある 個人のページでその他の詳細を出そうとしています。 名簿番号はフォームBの名簿番号.Textに持ってこれたのですが その名簿番号をVLOOKUPで研究名を出そうとしてもうまくいきません。 コードのどこがだめなのか分かりません。 VBA入門者です。 よろしくお願いいたします。 --------------------- Private Sub 決定_Click() Dim ADR As Variant On Error GoTo ExitER Set ADR = Worksheets("sheet1").Range("A:F") 研究名.Text = Application.WorksheetFunction.VLookup(名簿番号.Text, ADR, 4, False) On Error GoTo 0 Exit Sub ExitER: MsgBox "一致するコードがありません" On Error GoTo 0 End Sub ---------------------
- ベストアンサー
- オフィス系ソフト
- エクセル(VLOOKUP関数)~続です。
先程の質問の続きになるのですが、 エクセルにデータを入力をしていきたいのですが、数が何万件とあります。まず、コード表が2つあります。(2つのコード表はコード番号が重複しています) 本店が1で支店が2です。 セルAの1に本店コード1を入力したら本店コード表を基にして、VLOOKUP関数でセルAの2に種類コードを入力したら、セルAの3に種類名がでてくる。セルAの1に支店コード2を入力したら支店コード表を基にして、VLOOKUP関数でセルAの2に種類コードを入力したら、セルAの3に種類名がでてくる。このようなつくりにはできますか? 店名コード コード番号 種類名 1 1111 りんご 1 1112 ぶどう 2 1111 人参 1 1114 なし 2 1112 レタス 上記のような感じです。コード番号自体は重複しています。ただ店名コードが変わると、種類名が果物と野菜と区別されている感じです。 説明が分かりにくかったら補足致します。すみませんが分かる硬いましたら、ご教示ください。宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル
excelについての質問です。 取引先管理しています。すべてに会社コードが付いています。 同系列の会社にもそれぞれコードが付いています。 同系列の会社のコードを本社のコードに変えたいのですが、関数で変更することは可能でしょうか? 例) コード 会社名 1 A社 本店 2 B社 本店 3 A社A支店 4 A社B営業所 5 B社A支店 6 C社 本店 7 D社 本店 8 D社C支店 このようなのが、2.30あります。 もちろん支店のない取引先もあります。 よろしくお願いします。
- 締切済み
- その他(ビジネス・キャリア)
- On Error GoTo でエラーが発生する
Sub Macro1() On Error GoTo ErrorTrap1 '-エラーの発生するコード 1 ErrorTrap1: On Error GoTo 0 Do On Error GoTo ErrorTrap2 '-エラーの発生するコード 2 On Error GoTo 0 Loop ErrorTrap2: End Sub しかし、以下のようにSubで二つに分けるとエラーは出ません。 Sub Macro1() On Error GoTo ErrorTrap1 '-エラーの発生するコード 1 ErrorTrap1: On Error GoTo 0 Call Macro2 End Sub Sub Macro2() Do On Error GoTo ErrorTrap2 '-エラーの発生するコード 2 On Error GoTo 0 Loop ErrorTrap2: End Sub 「On Error GoTo 0」がうまく解除できていないのかと思い、いろいろ試してみました。 しかし、どういった理由かはわかりませんでした。 「On Error GoTo」は、Subでは、ひとつしか使えないのでしょうか。
- ベストアンサー
- オフィス系ソフト
- TextBox.2 に Vlookupを入れる記述を教えて下さい。
VBA初心者です。見よう見真似で売上伝票を作っています。 TextBox1には入力したコードをSheet2B1に書き込みたいです。 TextBox2にはTextBox1に入力したコードを見てVlookupのように、 商品リストから参照し、TextBox2に反映させたいです。 自分で作成してみたのですが、全く動きませんでした。 是非教えて下さい。宜しくお願い致します。 Private Sub CommandButton1_Click() With Worksheets("Sheet2") .Range("B1") = TextBox1.Text End With With Worksheets("商品リスト") TextBox2.Text = Application.WorksheetFunction.VLookup(Val(TextBox1.Value), RangeA, 2, False) End With End Sub
- ベストアンサー
- オフィス系ソフト
- お世話になります
お世話になります シートが存在する時だけ処理するマクロを組みたいです。 そこで下記の通り作ってみましたが、上手に動きません。 Sub マクロ() Dim mychksht As Worksheet 1: On Error GoTo 2 Set mychksht = Sheets("1") MsgBox "1 あります" 2: On Error GoTo 3 Set mychksht = Sheets("2") MsgBox "2 あります" 3: On Error GoTo 4 Set mychksht = Sheets("3") MsgBox "3 あります" 4: On Error GoTo 5 Set mychksht = Sheets("4") MsgBox "4 あります" 5: MsgBox "終了します" End Sub シートが2枚不足すると「インデックスが有効範囲にありません」とのメッセージが出ます。 ※1枚不足しているだけなら正常に処理します。 分かる方いらっしゃいますか? 理由と対策をお教え頂ければ幸いです。
- ベストアンサー
- その他MS Office製品
- 二つのエラーを発生させたい
ひとつのプロシージャー内で、 二つのエラートラップを仕掛ける事は出来ないのでしょうか? Sub エラーが発生した時にエラーが発生したら() Dim i As Long On Error GoTo Err1 i = "a" Exit Sub Err1: MsgBox "Err1のエラー: " & Err.Description On Error GoTo Err2 i = "b" Exit Sub Err2: MsgBox "Err2のエラー: " & Err.Description End Sub を行うと、 i = "b" で2回目のエラーが発生した時は、 実行時エラーになってしまいます。 i = "b" で2回目のエラーが発生した時に、 「Err2のエラー: 型が一致しません。」 と表示させるにはどうすればいいでしょう? Sub エラーが発生した時にエラーが発生したら() Dim i As Long On Error GoTo Err1 On Error GoTo Err2 i = "a" Exit Sub Err1: MsgBox "Err1のエラー: " & Err.Description i = "b" Exit Sub Err2: MsgBox "Err2のエラー: " & Err.Description End Sub にすると、 i = "a" のエラーで、 「Err2のエラー: 型が一致しません。」 へ移動してしまいます。
- ベストアンサー
- オフィス系ソフト
- ループの中で何度もエラー処理をしたい場合
サンプルコードを掲載します。 実際はセルの文字を取得するのでこのコードとは違いますが、形は同じです。 Sub test() Dim i As Long On Error GoTo Err1 For i = 0 To 5 i = "a" Err1: Debug.Print i "は、エラーになりました" Next End Sub このようなコードの場合、 i=0の時に、1回目のエラーになって 「0は、エラーになりました」が返りますが、 その後、i=1になった時に i = "a"を実行すると On Error GoTo Err1が無視され、エラーになってしまいます。 ループの中でエラーが何度発生してもエラー処理をする方法はありますか? On Error Resume Next以外の方法で教えてください。
- ベストアンサー
- オフィス系ソフト
- 「エラーの宣言」「エラーの定義」
Sub Sample() Dim i As Long On Error GoTo test i = "a" test: i = 1 End Sub こういうのって、 On Error GoTo test の部分は「エラーの宣言」って言いますか? 「エラーの定義」でしょうか?
- ベストアンサー
- オフィス系ソフト
- ある会社の飲み会に代行参加することになりましたが、奥様からのお願いで自腹で会費を負担することになりました。
- しかし、代行後も奥様は忘れたかのように振る舞い、代行代の領収書を求めることもありませんでした。
- 奥様の対応に疑問を感じ、何度かその後も会っても代行代の件は触れず、関係がよそよそしくなってしまいました。
お礼
お返事おそくなりました。 セルを単純にプロパティを出して文字列にしてるだけではダメなんですね。 有難うございました。#1とhige_082さんの教えでできました。