質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

1回答

1659閲覧

VBA初心者です。セルに関数を埋め込むコードについて質問があります。(どうかお力をお貸しください。)

R.Ka

総合スコア2

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2020/04/22 07:29

前提・実現したいこと

VBAで集計表を作成しております。
各セルに関数を埋め込むコードについて困っています。
具体的には、「=INDIRECT(TEXT(B7,"mmdd")&"!D4")」このような関数を埋め込みたいのですが、
「=INDIRECT(TEXT($B$7,"mmdd")&"!R4C4" )」このようになってしまいます。

また、下記のコード以外にもっと良い方法があればご教示いただきたく存じます。

発生している問題・エラーメッセージ

行列ともに変数としているため無理やりformulaR1C1を用いました。

その結果、下記のよう関数が各セルに埋め込まれてしまい、値が出ません。
=INDIRECT(TEXT($B$7,"mmdd")&"!R4C4" )

該当のソースコード

VBA

1Dim strTmp As String, strTmp2 As String 'セルに入れる関数の文字列strTmp 2 3For i = 7 To dayCount + 7 4 For j = 4 To 9 5 strTmp = "=INDIRECT(TEXT(R" & i & "C2,""mmdd"")&""!R4C" & j & """ )" 6 Cells(i, j).FormulaR1C1 = strTmp 7 Next j 8Next i

試したこと

列の変数jをなくし、列挙することにしたら下記のような関数が埋め込まれ、値が出た。
=INDIRECT(TEXT(B7,"mmdd")&"!D4")
しかしながら、列挙することで?分量も増え、このパターンの処理が他にもあるた改良したい。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

無理やりformulaR1C1を用いました。

マクロの記録をすると、なぜか、formulaR1C1で記録されますが
(記録されたものがいつも正解とは限らないので)、
別にFormulaプロパティを使ってもいいですよ。

Range("E4:E10").Formula "=INDIRECT(TEXT($B$7,""mmdd"")&""!D4"")"

みたいな感じで一回やってみてください。たぶんループする必要ないです。

投稿2020/04/22 14:28

mattuwan

総合スコア2136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問