エクセルのマクロでVlookupを実行するとコンパイルエラーが発生する

このQ&Aのポイント
  • マクロ初心者でVlookupを使うとコンパイルエラーが発生し、Vlookupの部分が青くなる問題が発生しています。
  • Windows XPとOffice 2000を使用しており、同じ文をシート内で使用している場合でも、マクロ用に何か定義が必要なのかどうかわかりません。
  • 初心者で図書館で借りた入門書しか手元にないため、アドバイスをお願いします。
回答を見る
  • ベストアンサー

エクセルのマクロでエラー

いつもお世話になっています、マクロ初心者です、Vlookupを使うとエラーになってしまいます。  Sheets("401回~").Select Application.Goto Reference:="回" AA = VLookup(I1, 回, 3) を実行すると コンパイルエラー Sub又はFunctionが定義されていません と表示され、Vlookupの部分が青くなります。 Windows Xp、Office2000です、sheet内で、同じ文を使っているのですが、マクロ用に何か定義が必要なのでしょうか? 初心者で、手元には図書館で借りた入門書しかありません。 アドバイスお願いします。

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

  • ベストアンサー
noname#66624
noname#66624
回答No.1

VBAでVLOOKUPを使う http://www.geocities.jp/happy_ngi/YNxv9591.html http://officetanaka.net/excel/vba/speed/s11.htm http://myrtus21.com/blog/2007/06/vbavlookup.html >Sub又はFunctionが定義されていません プロシージャ名(Subのところ)が間違っていないか 呼び出しているプロシージャ名が間違っていないか

hakujira
質問者

お礼

早速の回答ありがとうございます。 マクロでも配列を指定する必要があるんですね、シート内で名前を付けていたので、それがマクロにも生かされると思っていました。 URLは本当に参考になりました。

関連するQ&A

  • エクセルでマクロを実行するとコンパイルエラー

    エクセルでVBエディタでソースコードを記述し、マクロを実行すると、コンパイルエラー、「SubまたはFunctionが定義されていません」とエラーが出ます。これはどういうエラーですか?何が間違っているのですか?

  • excel2000マクロエラー

    下記のマクロを実行したときにエラーがでます。 Sheets("売上日報").Select Application.CutCopyMode = False ActiveSheet.Unprotect Sheets("売上日報").Select ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenasios:=True エラーメッセージ アプリケーション定義またはオブジェクト定義のエラーです。 下記のところでマクロがとまります。 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenasios:=True

  • マクロ範囲指定について

    セル(E1・E2)に指定したい行を入力した値を活用したい。 Sheets("sheet1").Select 上 = renge("e1").xlRowLabels 左 = 1 下 = renge("e2").xlRowLabels 右 = 3 Range(Cells(上, 左), Cells(下, 右)).Select このマクロを実行すると次のエラーが出ます。 コンパイルエラー SubまたはFunctionが定義されません。 初歩的な事の様な気もしますが宜しくお願いします。

  • [ マクロ ] エラーになったりならなかったりする

    マクロがエラーになったり、ならなかったりします。 エラーメッセージは、[ 起動されたオブジェクトはクライアントから切断されました。 ] で、 エクセルが固まってしまい、タスクマネージャーから強制終了をして、 再度動かすと動きます。 また、検索をして、下記フォルダ内を削除したりしましたが、 あまり変化はないようです。 C:\Users\ユーザー名\AppData\Local\Temp 1000行×12列ほどのシート(文字と数字)が10シートほどなので、 それほど重いとも思えません… デバックでひっかかる(黄色く変わる)のは、下記コードの この部分です。 ●ひっかかる部分 Selection.Insert Shift:=xlToRight ●コード(コピーして、挿入貼り付けをしている) Dim ABC As Worksheet Set ABC = ActiveSheet Sheets("tagハリカ").Select Columns("T:W").Select Selection.copy ABC.Select Columns("F:F").Select Selection.Insert Shift:=xlToRight Range("F2").Select 3回に1度ほどひっかかるので、この部分のコードだけを別にして、 下記エラー実験用のマクロをつくりましたが、 これでも、同じエラーが出ることがあります。 ●実験マクロ1 ※ アクティブシートをaという名前に変えました Sub エラーのための実験() Sheets("tagハリカ").Range("T:W").copy Sheets("a").Range("F:F").Insert Shift:=xlToRight End Sub → 5回目くらいに、オートメーションエラーが出て、(先ほどと同じエラーメッセージ) 下記部分が黄色くなります。 Sheets("a").Range("F:F").Insert Shift:=xlToRight ☆ どのようにしたら、スムーズに動いてくれるのでしょうか… どうぞ、よろしくお願いいたします。

  • エクセルのマクロについて

    エクセル97でマクロを組んで下記作業を行いたいと考えていますが(実際にやりたい事から抜粋した内容です)、不具合が起こっています。 ~やりたい事~ コマンドボタンを押すとあるシートのセルをコピーして、違うシートに貼り付ける。 ~不具合内容~ (1)普通にマクロを実行すると問題ないが、(2)コマンドボタンを使用するとエラーが起こる。 エラー内容は、 「実行時エラー'1004' RangeクラスのSelectメソッドが失敗しました。」 と言う内容です。 ~(1)のVB表記~ Sub Macro1() Sheets("sheet1").Select Range("A1").Select Selection.Copy Sheets("sheet2").Select Range("A1").Select ActiveSheet.Paste End Sub ~(2)のVB表記~ Private Sub CommandButton1_Click() Sheets("sheet1").Select Range("A1").Select (←ここでエラーが発生します) Selection.Copy  Sheets("sheet2").Select Range("A1").Select ActiveSheet.Paste End Sub ~質問事項~ 1)(2)の表記の何が原因でエラーが起こっているのでしょうか? 2)エラーが起きない為にはどのようにしたら良いでしょうか?

  • エクセル・マクロ シートの非表示でマクロのエラー

    エクセル勉強中です。 マクロの記憶でSheet2の元データの図と記入できるセルをSheet1の有効セルにコピペするマクロを作りました。 複数の方が使う予定なので元データのSheet2を非表示にしたところマクロがエラーになりました。 どうしたらよいでしょうか? また貼り付けをする時、微妙に元データのシートがちらちらと移ります。 こちらも合わせてご指導いただけましたら助かります。   よろしお願いします。 Sub b1ab1() ' ' b1ab1 Macro ' ' Sheets("Sheet2").Select Range("AK48:AP56").Select Selection.Copy Sheets("ダクト制作単品図").Select ActiveSheet.Paste End Sub

  • エクセル「マクロの記録」を少し直したい

    マクロの記録で作った下記を Sub Macro1() Sheets("Sheet1").Select Rows("6:6").Select Selection.Copy Sheets("Sheet2").Select Rows("2:2").Select ActiveSheet.Paste End Sub 以下のように書き換えたら、2行目(Paste)がエラーになりました。 Sub ts1() Sheets("Sheet1").Rows("6:6").Copy Sheets("Sheet2").Rows("2:2").Paste End Sub セレクトしないで行ないたいのです。 どう直せばいいでしょうか?

  • マクロでソルバーを使えますか?

    VBAは未経験です。エクセルでソルバーをマクロで記録し、実行しようとしたらエラーメッセージが出てしまいました(コンパイルエラーsubまたは functionが定義されていません)。 マクロにソルバーを組み込むこと自体ができないのでしょうか? 宜しくお願いします。 Range("E4:M4").Select Selection.Copy Range("E11").Select ActiveSheet.Paste Range("E4:M4").Select Selection.Copy Range("E12").Select ActiveSheet.Paste SolverOk SetCell:="$E$7", MaxMinVal:=3, ValueOf:="20", ByChange:="$D$5:$K$5" SolverSolve Range("E4").Select End Sub

  • Excelのエラー「1004」について

    先週末まで問題なく動いていたExcelファイルのマクロが動かなくなりました。 考えられる原因は違う部署に異動になったためPCを交換したことです。 確認するとマクロに書かれていたファイルの場所等は以前と同じで問題なさそうです。 ファイル内にあるマクロ4つの内2つまではきちんと動きます。 表示されたメッセージは 「実行時エラー‘1004’アプリケーション定義またはオブジェクト定義のエラーです。」 マクロの内容は下記の通りです。 デバッグをすると上下の矢印でくくったところの色が変わります。 ----------------------------- ' Macro3 Macro Sheets("売上実績").Range("E1").Value = _ Right(Workbooks("a.csv").Sheets("a").Range("B3").Value, 2) Sheets("新規").Select Dim 売上最終行 As Integer 売上最終行 = (Range("A65536").End(xlUp).Row) - 5 Dim 日付列 As Integer 日付列 = Sheets("売上実績").Range("E1") Cells(3, (Sheets("売上実績").Range("E1") + 2)).Select With ActiveCell ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ .Resize(売上最終行 - 2, 1).FormulaR1C1 = "=VLOOKUP(RC1,a.csv!C1:C4,4,0)" ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ End With Range(Cells(3, 日付列 + 2), Cells(売上最終行, 日付列 + 2)).Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.Replace What:="#N/A", Replacement:="0", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Application.CutCopyMode = False Range("C3").Select ~~~~~~~~~~~~~~~~~~~~~~~~~~~  しばらく問題なく動いていたため、混乱しております。 何かお気付きの方がいらっしゃったらお教えいただけないでしょうか? どうかよろしくお願い致します。

  • エクセル2000のマクロについて再び

    新しいブックを作りさらに他のブックで作成されているシートをコピーして移動するというマクロを作ります。この時、新しく作ったブックの名前がBook1にならないとその時点でマクロのエラーになりなってしまいますが、たまにBook2になってしまうときがあります。必ずBook1になると指定することはできないのでしょうか。 Sheets(Array("sheet1", "sheet2", "sheet3")).Select Sheets(Array("sheet1", "sheet2", "sheet3")).Copy →新しいシートを作成 Workbooks.Open Filename:="C:xxx\○○\△△.xls" Sheets.Copy after:=Workbooks("book1").Sheets(2) →ここで、Book1が存在しないとエラーになってしまう。 お願いします。