EXCELマクロでセル関数パラメータに変数値を指定する方法

このQ&Aのポイント
  • EXCELマクロでセル関数のパラメータに変数値を指定したい場合、マクロで定義した変数名がパラメータの式になってしまうことがあります。
  • 例えば、HYPERLINK関数のパラメータに変数を指定したい場合、変数名がそのまま式になります。
  • この問題を解決するためには、変数名を式の中で文字列として扱う必要があります。つまり、変数名をダブルクォーテーションで囲むことで、文字列として認識させることができます。
回答を見る
  • ベストアンサー

EXCELマクロでセル関数パラメータに変数値を指定

EXCELマクロで、セルにHYPERLINK関数の式を設定するマクロを作っています。 HYPERLINK関数のパラメータにはマクロ内で定義した変数に入れた値を指定したいのですが、 値ではなく変数名がそのままパラメータに指定されたHYPERLINK関数の式になってしまいます。 例) Sub ハイパーリンク設定マクロ() w_aaa = "C:\test\test.xls" w_bbb = "test.xls" ActiveCell.FormulaR1C1 = "=HYPERLINK(w_aaa,w_bbb)" End Sub 上記マクロで作成された式 =HYPERLINK(w_aaa,w_bbb) 期待する式 =HYPERLINK("C:\test\test.xls","test.xls") 対処方法がお分かりになる方がおりましたら、 ご教授願います。よろしくお願いします。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

ActiveCell.FormulaR1C1 = "=HYPERLINK(w_aaa,w_bbb)" の部分を ActiveCell.FormulaR1C1 = "=HYPERLINK(" & w_aaa & "," & w_bbb & ")" として試してみてください。

yama6437
質問者

お礼

ご回答下さり、ありがとうございます。問題は解決いたしました。今後もよろしくお願いします。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

「セルに入れたい数式の文字列」を文字列演算で加工して作成し,それをセルに式として投入します。 作成例: activecell.formula = "=HYPERLINK(" & w_aaa & "," & w_bbb & ")"

yama6437
質問者

お礼

ご回答下さり、ありがとうございます。問題は解決いたしました。今後もよろしくお願いします。

関連するQ&A

  • 【大至急】excel2003 VBAマクロの質問

    excel2003でのVBAマクロを作っているのですが、いまいちよくわからないのです 下記条件を満たすサンプルコードのご教示をお願いします。 ■初期状態 仮にフォルダ、ファイル配置が下記の通りだとします C:\マクロ.xls C:\template.xls C:\aaa\ C:\bbb\bbb_test.xls C:\ccc\ . . . C:\nnn\ ■動作要件 (1)マクロ.xlsは自分のファイルパスを検索する (2)マクロ.xlsと同じフォルダにあるサブフォルダ配下に、各々フォルダ名_test.xlsというファイルを作成する (3)上記(2)で.xlsファイルを作成するとき、template.xlsをコピーして作成する (4)既にサブフォルダ配下に***_test.xlsファイルが存在する場合は作成しない <マクロ実行後の状態> C:\マクロ.xls C:\template.xls C:\aaa\aaa_test.xls ←template.xlsからコピー作成 C:\bbb\bbb_test.xls ←ファイル作成、上書きはしない C:\ccc\ccc_test.xls ←template.xlsからコピー作成 . . . C:\nnn\nnn_test.xls ←template.xlsからコピー作成 (5)上記(1)-(4)を、フォルダがなくなるまで繰り返す 以上です。よろしくお願いします。

  • Excelマクロ パスの指定方法

    Excelのマクロで別のファイルを編集するのにパスを指定しています。 現状は使用しているドライブ、フォルダが固定されているので下記の様に ドライブ名から指定しています。 <現状>  ・C:\AAA\BBB\PPP.xls   →マクロの入っているファイルを指定  ・C:\AAA\BBB\CCC\SSS.xls  →編集したいファイルを指定 今後、別のドライブやフォルダで使用出来る様にしたいのですがどうすれば よろしいでしょうか?  ・~\BBB\PPP.xls、~\BBB\CCC\SSS.xlsの位置関係は固定  ・~\BBB\CCCの下にあるSSS.xlsを開いて編集したい。  ・~\BBB\PPP.xlsがC\、D\等どのドライブ、フォルダになっても使用可能にしたい。 以上よろしくお願い致します。

  • Excelマクロでyyyymmddの変数

    Excelのマクロで他のファイルを呼び出す際、当日や前日(ファイル名:yyyymmdd.xls)のファイルを指定したいのですが、変数を指定する方法を教えてください。 Workbooks.Open Filename:="C:\WINDOWS\デスクトップ\20040215.xls"←これを変数にしたい

  • エクセルのマクロで、別ファイルの数値を参照する方法

    現在aaa.xlsというファイルを開いていて、 そのセルA1には20070621という数値が入っています。 別にbbb_20070621.xlsというファイルがあって、 そのファイルのsheet1内の、B1の値を参照したいと思います。 bbb_20070621.xlsのようなファイルが無数にあるので、 ファイルを開かなければいけないINDIRECT関数は使いたくありません。 =INDIRECT("[bbb_"&A1&".xls]Sheet1!B1") ファイルを開かず参照できるように、 できればマクロ(VBA)で組みたいと思っています。 RangeやCellでいろいろ試してみたのですが、 どうもうまくいかず、 分厚いマニュアルにも書いてありませんでした。。 初歩的な質問ですいませんが、 どなたかよろしくお願いします。

  • マクロAAAの変数をマクロBBBで使いたい

     マクロAAAの変数をマクロBBBで使いたいのですが Sub AAA() Dim xx xx = 15 Call BBB End Sub Sub BBB() マクロAAAの xx で処理作業 End Sub マクロAAAの xx は色々変化します。   このようなときどのようにすればよいのか   お教えください宜しくお願いします。

  • ExcelのVBA。Staticな変数について

    あるプロシージャやfunctionで定義したstaticな変数は、その定義したsubやfunctionで有効です。今回、例えば、static a as integer とSub AAA 内で、定義し、その AAA が呼び出す BBB という ユーザーフォームの中でも staticな変数である a に値を代入したり、変更したりし、その後 sub AAAにまた入ったとき、BBBで変更した内容を保持することができるのでしょうか。

  • 毎日指定時刻に自動でエクセルを開き、マクロを起動する方法

    <前提条件> ・パソコンを常に起動している(シャットダウンはしない) ・TEST.xlsにマクロ作成済 <お聞きしたいこと> ・毎日指定時刻(15:30)にTEST.xlsを開き、登録されている  マクロを自動で実行したい <私の考え> ・TEST.xlsに下記マクロを登録しようと思っております。  ただ、下記だけですと、「指定時刻にエクセルを開く」と、  「毎日指定時刻に自動でマクロを実行する」ことができません。  あまりマクロについて知識がないため、ご教示のほどよろしくお願いいたします。 Sub 指定時刻にマクロを実行する() Application.OnTime TimeValue("15:30:00"), _ "MSGBOX", _ TimeValue("00:00:30") End Sub Sub MSGBOX() msgbox"TEST" End Sub 

  • vlookup関数の引数を変数で指定することはできますか?

    エクセルのVBAでマクロを組み、同じフォルダ内にあるファイルにvlookup関数でリンクを張ろうかと考えています。 ファイルの構成は以下の通りです。 マクロを組んでいるファイル:Book1.xls マクロが適応されるファイル:Book2.xls vlookup関数で参照されるファイル:Book3.xls 実際にBook1に組んだマクロは以下の通りです。 Workbooks.Open ThisWorkbook.Path & "\Book2.xls" Workbooks("Book2.xls").Activate myFile = ThisWorkbook.Path & "\" & "Book3.xls" b = 2 Do Until ActiveSheet.Cells(b, 1) = "" ActiveSheet.Cells(b, 6) = "=VLOOKUP(E" & b & ",myFile!$A:$F,5,0)" b = b + 1 Loop 上記マクロで実行すると、Book2が開き、vlookup関数が挿入されるところまではいきますが、 変数myFileが正常に変換されないらしく、ファイルが見つからない状態となってしまいます。 myFileの代わりにフルパスでファイルをしていすると正常にマクロは起動することは確認しましたが、 毎回作業するフォルダが変わる為、フルパス指定はできるだけ避けたいです。 基礎的な質問で恐縮ですが、 vlookup関数の引数(参照範囲)を変数で指定する方法を教えてください。 よろしくお願いいたします。

  • オートフィルマクロで作り、パラメータを変数にす方法

    EXCEL2007にて textBoxに入力された値を オートフィルのパラメータに指定したいのですが、 どのように記述すれば良いかわかりません。 Dim a As Integer a = TextBox.Text この変数aをオートフィルのパラメータにするにはどうすれ良いでしょうか? TextBoxに"10"と入力した場合、 A1:A10までオートフィルするためのマクロです。 ..........|A|B|C .....1..|10 .....2..|10 .....3..|10 .....4..|  .....5..| .....6..| .....7..| 初心者のため説明不足で申し訳ないのですが、 よろしくお願いいたします。

  • 関数定義での変数について

    Perl/CGIより移行してきた者です。 この度、サブルーチン(PHPで言う関数定義)にて疑問があります。 当方、PHP5を利用しています。 Perl/CGIでは関数外で定義した変数も利用できたかと思うのですが、PHPでは利用できますか? 簡単なスクリプトでテストしたら表示されなく頭を悩ませています。 以下コードになります。 <?php $prints ="aaa"; $printss ="bbb"; function check3(){ print "$prints"; print "$printss"; } check3(); ?> Perl/CGIですと $test = "aaa"; &print(); sub print { print "$test"; } でもばっちり表示されたかと思うのですが。 伝わりにくいかと思いますが、ご存知の方宜しくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう