マクロFormulaで変数を使うと定義のエラーが出る

このQ&Aのポイント
  • 価格表を元に、型番から価格を検索するマクロを作りたいが、変数を使うと定義のエラーが出る。
  • i = kakakuretu - katabanretuとしてFormulaR1C1に代入すると、iが定義エラーになる。
  • 初心者で記録マクロをいじるくらいしかできないため、変数の定義などがよくわからない。
回答を見る
  • ベストアンサー

マクロFormulaで入力する式に変数を使うと定義のエラーと出る

価格表を元に、型番から価格を検索するマクロを作りたいのですが、 i = kakakuretu - katabanretu Selection.FormulaR1C1 = "=IF(ISNA(VLOOKUP(RC[i],'C:\Documents and Settings\@\My Documents\東京購入分\[東京購入分.xls]sheet1'!C2:C5,4,FALSE)),"""",VLOOKUP(RC[i],'C:\Documents and Settings\@\My Documents\東京購入分\[東京購入分.xls]sheet1'!C2:C5,4,FALSE))" とすると、iが定義エラーになってしまいます。 初心者でネットを見ながら記録マクロをいじるくらいしか出来ないので 定義などよくわかりません。教えて下さい。

noname#113614
noname#113614

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

"=IF(ISNA(VLOOKUP(RC[" & i & "],'C:\Documents and Settings\@\My Documents\東京購入分\[東京購入分.xls]sheet1'!C2:C5,4,FALSE)),"""",VLOOKUP(RC[" & i & "],'C:\Documents and Settings\@\My Documents\東京購入分\[東京購入分.xls]sheet1'!C2:C5,4,FALSE))" あと、R1C1形式で指定しているのに「C2:C5」の範囲指定は有効なのでしょうか?

noname#113614
質問者

お礼

出来ました!!感激です。ありがとうございました。 >あと、R1C1形式で指定しているのに「C2:C5」の範囲指定は有効なのでしょうか? 私も??なのですが、記録マクロで作ったらこんな風になっていました。でも実行できました!本当に助かりました!

関連するQ&A

  • VBAで統合ができない・・・。

    エクセルのマクロの記録で作ったコードですが、実行すると「開けません」と出ます。 どこがいけないのでしょうか? Sub Macro2() Selection.Consolidate Sources:=Array( _ "'C:\Documents and Settings\abcd\My Documents\2011\新規[対象2010.12.xls]店別集計'!R3C4:R69C10" _ , _ "'C:\Documents and Settings\abcd\My Documents\2011\新規\[対象2011.01.xls]店別集計'!R3C4:R69C10" _ ), Function:=xlSum, TopRow:=False, LeftColumn:=False, CreateLinks:= _ False End Sub

  • 入力された名前やIDを変数に代入させて簡単に入力

    例えば セルB2に織田信長、セルB3に1022 セルB5に ='C:\Documents and Settings\Owner\デスクトップ\[1022織田信長.xls]Sheet1'!$C$5 セルB6に ='C:\Documents and Settings\Owner\デスクトップ\[1022織田信長.xls]Sheet1'!$C$6 セルB8に ='C:\Documents and Settings\Owner\デスクトップ\[1022織田信長.xls]Sheet1'!$C$8 というような式が入っているんですが、新たに番号1023の徳川家康さんを登録した時に 最下行でもいいんですが、セルC2に徳川家康、セルC3に1023が入力され セルC5に ='C:\Documents and Settings\Owner\デスクトップ\[1023徳川家康.xls]Sheet1'!$C$5 セルC6に ='C:\Documents and Settings\Owner\デスクトップ\[1023徳川家康.xls]Sheet1'!$C$6 セルC8に ='C:\Documents and Settings\Owner\デスクトップ\[1023徳川家康.xls]Sheet1'!$C$8 というような形で簡単に書き換えてくれるようなVBAの式はつくれますか?とにかく新しく新入生が入ったときに簡単に入力が出来るようにしたいです。 いい方法がありましたらお教え下さい。よろしくお願い致します。

  • リンクのVBAを教えてください。

    いつも、御指導ありがとうございます。 売掛金元帳のセル(J3)に数式1で、[得意先登録.xls]得意先登録から社名を表示させています。 ●数式1  '=IF($C$2="","",IF(ISERROR(VLOOKUP($C$2,'C:\Documents and Settings\aaa\My Documents\販売管理 \登録 (台帳)\[得意先登録.xls]得意先登録'!$D$7:$E$65536,2,FALSE)),"未登録です", VLOOKUP($C$2,'C:\Documents and Settings\aaa\My Documents\販売管理 \登録 (台帳)\[得意先登録.xls]得意先登録'!$D$7:$E$65536,2,FALSE))) 売掛金元帳のセル(E2)に数式2で、[自社情報登録.xls]自社情報'!$C$3から自社名を表示させています。 ●数式2  '='C:\Documents and Settings\aaa\My Documents\販売管理\登録 (台帳)\[自社情報登録.xls]自社情報'!$C$3 ●数式1及び数式2をVBAで記述したいのですがど、うしても記述出来ません。 ●まるなげになってしまいますが、数式1及び数式2と、社名変更があった場合は売掛金元帳へ反映させるVBAを教えてください。 宜しく御願いいたします。

  • Excel 相対パス

    Excelでvlookup関数を使っていますが 参照範囲が別ファイルです。 参照先が絶対パスになってしまいますが これでは他人にこのファイルを提供した場合つかえません。 そこで相対パスにしたいのですができません。 どうしたら良いのでしょうか? =VLOOKUP(C2,'C:\Documents and Settings\user1\管理\[20130000.xls]Sheet1'!$D$6:$E$634,2,FALSE) これを =VLOOKUP(C2,'./[20130000.xls]Sheet1'!$D$6:$E$634,2,FALSE) にしたい。

  • 統合マクロでパスの取得方法

    お世話になります。 集計ファイルでエリア・商品で集計をとっています。 一つのファイルにまとめたいのでエリアをシート名による串刺し 商品を統合を使って集計していますが 毎回統合ボタンを押すのが大変で マクロを使い下記のコードを使っていますがファイルのパスで固定されているので 人に渡すとファイル名の変更、ユーザーの違いによりエラーになってしまいます。 現在開いているファイルの名前とパスをマクロに取り込み統合させる事は可能でしょうか Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2009/9/29 ユーザー名 : user ' ' Sheets("一般A").Select Range("b6").Select Selection.Consolidate Sources:=Array( _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]〇〇一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]□□一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]△△一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]××一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]●●一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]■■一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]▲▲一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]++一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]※※一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]%%一般A'!R6C2:R64C9"), _ Function:=xlSum, TopRow:=False, LeftColumn:=False, CreateLinks:=False Sheets("一般B").Select Range("b6").Select Selection.Consolidate Sources:=Array( _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]〇〇一般B'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]□□一般B'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]△△一般B'!R6C2:R64C9", _ ・ ・ ・ ・ End Sub DIMとかActiveWorkbook.Pathとか組み込みましたが うまく行かないです。 どうぞ助けてください。

  • ファイルの保存先を任意にしたい(マクロ)

     エクセルのマクロです。  マクロを実行した時に、保存先とファイル名は任意に入力して(その部分だけは、マクロ実行者が入力して)、その後もマクロを実行させたいのですがどうすれば良いのでしょうか? たとえば、 ActiveCell.FormulaR1C1 = "1" Range("B1").Select ChDir "C:\Documents and Settings\a\デスクトップ" ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\a\デスクトップ\ Book1.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Range("A2").Select ActiveCell.FormulaR1C1 = "2" Range("B2").Select ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\a\デスクトップ\ Book2.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Range("A3").Select ActiveCell.FormulaR1C1 = "3" Range("B3").Select ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\a\デスクトップ\ Book3.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Range("A4").Select ActiveCell.FormulaR1C1 = "4" Range("B4").Select  上記の場合は、保存先もファイル名もこちらが指定していますが、その部分だけは、マクロの実行者に任意指定及び入力させたいのです。  マクロ初心者なので、よろしくお願いします。

  • コマンドボタンでマクロを起動するとエラーになる

    以下のようなコードをツールバーのマクロから起動するようにするとできるのですがコマンドボタンから起動するようにするとエラーになります。なぜでしょうか? Private Sub CommandButton1_Click() Application.ScreenUpdating = False Workbooks.Open "C:\My Documents\b.xls" Windows("b.xls").Activate Columns("A:C").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _ Workbooks("a.xls").Sheets("Sheet2").Range"A1:A3"), CopyToRange:=Columns("E:G"), Unique:=True ~ここでエラー'1004'~ Windows("a.xls").Activate Workbooks("C:\My Documents\b.xls").Close Application.ScreenUpdating = True End Sub

  • VBA フォルダ内にファイルが存在するか確認したい

    OS: WindowsXP Office: 2003 ExcelVBAについて教えてください。 VBAで特定のフォルダー内でファイルが存在するかの確認をしたいのです。 例えば、以下のようなフォルダーに営業日がファイル名に付いた複数のファイルがあります。  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120201.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120202.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120203.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120206.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120207.xls  C:\Documents and Settings\aaa\デスクトップ\作業\報告書20120208.xls 処理は20120201(2012年2月1日)から順番に行うのですが、その際、 報告書20120203.xlsはファイルが存在しているので変数1を返す。 報告書20120204.xlsは休日のためファイルが存在しないので変数0を返す。 次の処理で変数1の場合は処理をし、変数0の場合は処理を飛ばすと言った内容のマクロを考えています。 要はフォルダー内にファイルが存在するかしないかの部分のマクロ記述を知りたいのです。 どなたか、よろしくお願いします。

  • VBマクロで教えて下さい。

    下記VBマクロで上書きしない時はマクロを終了させたいのですがこ指導をお願いします。 Sub Macro2() ' Macro2 Macro ' マクロ記録日 : 2012/9/3  ユーザー名 : HA社    ChDir "C:\Documents and Settings\6464552\デスクトップ"    ActiveWorkbook.SaveAs Filename:= _        "C:\Documents and Settings\6464552\デスクトップ\直送先部品出庫伝票.xls", FileFormat:= _        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _        , CreateBackup:=False  Range("D42:E49").Select    Selection.ClearContents    Range("I32:J32").Select    Selection.Copy    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _        :=False, Transpose:=False    Application.CutCopyMode = False    ActiveWorkbook.SaveAs Filename:= _        "C:\Documents and Settings\6464552\デスクトップ\PPSC部品出庫伝票.xls", FileFormat:= _        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _        , CreateBackup:=False    Application.Quit End Sub

  • ExcelVBAでファイルの名前をつけて保存

    こんばんは! Workbooks.Add ChDir "C:\Documents and Settings\test\My Documents\住所録" ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\test\My Documents\住所録\友達.xls", FileFormat _ :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _ False, CreateBackup:=False ActiveWindow.Close として現在開いているファイルから、新規ファイルを作成してデータを写しこみたいと考えているのですが、この書き方だと自分のパソコンでしか出来ないので困っています。 ThisWorkbook.Pathを使うんだろうと思うのですが、どの様に使えばよいのか判らず困っています。 現在開いているファイルと同じフォルダの中に住所録というフォルダを更に作成し、その住所録フォルダの中に新しいファイルを作りたいのですが。。 ご伝授願います。

専門家に質問してみよう