よろしくお願いします。いつもgooの皆さんには大変お世話になっています
エクセルは2013です
わけあって、セルにマクロで式を書いています
例えば TRは行を表す変数ですが
Range("K" & TR).Formula = "=IFERROR(AY" & TR & ","""")" と書いたマクロの結果は
=IFERROR(AY43,"") という式がRange("K" & TR) に書かれます
それでは、いま、マクロで下記のように書いているコード(TRは行を表す変数です)
Range("Z" & i) = Range("Z" & i - 1) - Range("AG" & TR) * 10000 は
Range("Z" & i).Formula =
で書く場合、=の右側をどう書いたら良いでしょうか
色々とやってみたのですが狙った式になりません
この場合 変数 i を使っているので、もしかしたら、そもそも無理なことでしょうか
うまく説明できていませんがよろしくお願いします
No.3
- 回答日時:
残念ながら式の中に変数は入れられません。
出来ると便利ですけどね。ありがとうございます
私の説明が足りませんでしたことお詫びします
私も、いろいろなパターンで何度もやって無理だと判断しましたが
お陰様で問題が解決しました
No.4
- 回答日時:
こんにちは。
Range("Z" & i) = Range("Z" & i - 1) - Range("AG" & TR) * 10000 は
常識的には、i は、ループ・カウンターで、TR は、固定の変数だと思います。
そのままでしたら、数式ではなく、定数が書き込まれるだけです。
これが数式には変えようにもありません。
実際に、ワークシート上で、どのような数式にするか、つまりどのような結果を求めるか書かれていないので、私には単純に答えられません。
"=IFERROR(AY" & TR & ","""")"
は、数式には変えられますが、
=Range("Z" & i - 1) - Range("AG" & TR) * 10000
は、単なるVBAのコードでしかありません。
VBAコードから想像できるのは、
TR =8 なら、
R1C1 方式で、
"=R[-1]C-R8C33*10000"
このような数式です。
それをループするのではなく、範囲で貼り付けすればよいわけです。
A1 方式ですと、ややこしくなります。
ワークシート上でVBAコードを作り出すこともないとは言えませんが、もしそうでしたら、.Value プロパティで十分だと思います。なれないうちは、Debug.Print などで、試打しながら、ダブルコーテーションを整えながら、出すしかないと思います。
勘違いしていましたら、どうかスルーして構いません。
WindFallerさん、こんばんは
先日は3つのエリアの入力監視で大変お世話になりました
監視エリアが増えても応用できるので、発展性のあるマクロですね
ありがとうございました
今回、私の説明がヘタでお手数をおかけしました
お陰様で問題が解決しましたので報告します
ありがとうございました
No.5ベストアンサー
- 回答日時:
No.1です。
申し訳ありません大ボケな回答をしていましました。要するに↓ってことですよね? また勘違いしていたらスミマセン。
Range("Z" & i).Formula = "=Z" & i - 1 & "-AG" & TR & " * 10000"
siffon9さん、こんばんは
前にも.Offset(0, -4).Valueを教えていただきました
その節は大変ありがとうございました
報告とお礼が大変遅くなりました
また、教えてもらう立場でありながら、私の説明不足が多くてお手数をおかけしました
siffon9さんに教えていただきました
"=Z" & i - 1 & "-AG" & TR & " * 10000" を
マクロで書き込んでみると見事に計算してくれました
繰り返し変数 i も見事に数値に置き換わって
(この「数値に置き換わる」というのが、私の能力を超えて不思議ですが)
出来ました、完璧です
感動ものです!!!!
実は、今回の答え "=Z" & i - 1 & "-AG" & TR & " * 10000" に
近い形を " と & の位置を変えて、数多くのパターンを夜中の3時頃まで
やったのですが、あと一歩のところでsiffon9さんと同じにならなかったのです
多分 i - 1 のところが、" や、&を入れてしまったのが原因のようです
「変数は必ず & でつなぐ」「前後は""で囲む」「””は""""」というのは
分かっていたのですが、今回、初めて i を使ったので、i は変化するので
使えないと判断してあきらめてしまいました
お陰様で難問が無事解決しました
私の説明不足で何度もお手数をおかけしました
何度やっても、見事に引き算をやってくれています
計算の動きが面白くて何度もやってしまいます
ありがとうございました
感謝いたします
No.6
- 回答日時:
返事をありがとうございました。
以下は、あくまでも私の想像の範囲だけなのですが、
>Range("Z" & i) = Range("Z" & i - 1) - Range("AG" & TR) * 10000
つまり、このVBAの表現を数式の表現に変えるという意味だったわけですね。
それで、i がループカウンタで、TR がダブルクリックしたセルの行
勘違いしていなければ、たぶん、こういうことで可能ではないかと思います。
Cells(TR + i, "Z").FormulaLocal = "=Z" & TR + i - 1 & "-AG" & TR & " * 10000"
ただし、i は、1からですと、この数式が成立しません。だから、i=1 ではいけませんね。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim TR As Long
Dim i As Long
Cancel = True
TR = Target.Row
For i = 0 + TR To 9 + TR
Cells(i, "Z").FormulaLocal = "=Z" & i - 1 & "-AG" & TR & " * 10000"
Next i
End Sub
例えば、
--------------------
'なお、ループしない場合、私は、以下のように書くことが多いです。TR行以降に数式を貼り付ける場合です。
TR = Target.Row
i=10
Cells(TR, "Z").Resize(i, 1).FormulaLocal = "=R[-1]C26-R" & TR & "C33 *10000"
End Sub
私の説明が足りずに、問題をより複雑にしてしまいました
お詫びいたします
WindFallerさんに書いていただいた、式の右側部分だけ
"=Z" & i - 1 & "-AG" & TR & " * 10000"
で、i を使っても見事に計算してくれています
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) Formulaプロパティーを使ってセルに数式を組んだのですが簡潔にしたい。 2 2022/03/28 17:38
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Excel(エクセル) マクロを簡潔にしたい 6 2022/09/16 10:37
- Excel(エクセル) Formulaプロパティーを使ってセルに数式を組んだのですが簡潔にしたい。 3 2022/08/21 20:51
- Excel(エクセル) excelVBAについて。 8 2022/12/11 13:47
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Excel(エクセル) シート名を簡単に書く方法があれば教えてください。 4 2023/08/24 12:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミングについて。 1つ...
-
画面を強制的に再描画させる方法
-
DoEventsが必要な理由について
-
pythonでファイルのコメント行...
-
DOSコマンドのループ内のTIMEコ...
-
For文を使った九九表の作成
-
VBAで3秒だけ時間を止めたい
-
vbscriptでIE自動入力(途中で...
-
ループ内での条件処理
-
CSVファイルの特定の行だけを読...
-
GIFアニメをループさせたくない
-
VBA横データを縦にしたいです
-
vb.netからエクセル関数書き込み
-
エクセル関数で1〜12の数字がル...
-
vb.netです。2次元配列の要素を...
-
VBA for文が止まらない
-
アセンブラによるウェイト(WAIT...
-
UWSCの終了の仕方
-
テキストボックスの名前に変数...
-
アクティブセルから、A列最終行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAで3秒だけ時間を止めたい
-
VBAでの一時停止と再開の方法
-
どなたかこのプログラミングを...
-
Escキーを押すと、中断する時と...
-
UWSCの終了の仕方
-
エクセルの当番表を作っていま...
-
VBA for i=1 to lastrow
-
「偶数・奇数の和」のフローチ...
-
アクティブセルから、A列最終行...
-
DoEventsが必要な理由について
-
vb.netからエクセル関数書き込み
-
GIFアニメをループさせたくない
-
DOSコマンドのループ内のTIMEコ...
-
範囲指定したセルを1つずつ飛...
-
流れ図(フローチャート)が分か...
-
乱数の桁数指定、または範囲指定。
-
テキストボックスの名前に変数...
-
CSVファイルの特定の行だけを読...
-
vb.netです。2次元配列の要素を...
おすすめ情報
タイトルと質問が一致していません。お詫びします
タイトルは
Range("Z" & i).Formula = で、セルにマクロで式を書きたいのですが
にすべきでした
出先から補足させてください
度々の説明不足で申し訳ありません
TRはWクリックしたセルの行です
i は10回繰り返す変数です
帰宅後にお礼させてください