• ベストアンサー

VBA 計算結果を数値ではなく、数式で表示したい。

配合表から配合比率を計算するVBAを組みたいのですが、実際の数値ではなく計算式を表示したいです。 こちらが自分で記入したコードです。 Q列とAA列とAB列をかけて、100で2回割った結果をAC列に表示します。同じ行にすべての数値が記入されないので、AB列からそれぞれ必要な列の数値を取得しています。 Sub 配合比率仮() Dim i As Integer Dim AB Dim Q Dim AA Range("AB3").Select For i = 1 To 500 If ActiveCell.Value = "" Then     '空白の場合下のセルへ ActiveCell.Offset(1, 0).Select Else '配合割合の数値がある場合 AB = ActiveCell.Value         'アクティブセルの数値の取得 Q = ActiveCell.Offset(0, -11).End(xlUp).Value        '重量比率を取得 AA = ActiveCell.Offset(0, -1).End(xlUp).Value        '配合割合の左列を取得 ActiveCell.Offset(0, 1) = s * t / 100 * u / 100       '製品の配合比率を計算(ここを数式にしたいです) ActiveCell.Offset(1, 0).Select       '下のセルへ End If Next i End Sub 上記コードでは数値が表示されます。数式で結果を表示させる方法を教えてください。Formula/FormulaR1C1プロパティを使うと思ったのですが、うまく動くコードが書けませんでした。初心者に毛が生えたようなもので上記コードもなっていないものかとは思うのですが、どうぞお力を貸してください。

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

数式をセットしたいのですか? >ActiveCell.Offset(0, 1) = s * t / 100 * u / 100 s、t、u、の出処がよくわかりませんがセル番地になるのですか? 多分ですが 各セルの番地を取得して AB = ActiveCell.Address Q = ActiveCell.Offset(0, -11).End(xlUp).Address AA = ActiveCell.Offset(0, -1).End(xlUp).Address Formulaで数式をセットすればいけると思います。 ActiveCell.Offset(0, 1).Formula = "=" & AB & "*" & Q & "/100*" & AA & "/100"

rurumiko
質問者

お礼

できました。 ありがとうございます。 コードに間違いがあったにも関わらず、的確なご回答感謝します。

その他の回答 (2)

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.3

確認させてください。 このコードだと、計算結果をセルに入力して、表示されるのも当然計算結果なのですが、それをどのようにしたいのでしょうか? ・計算式を表示させる(計算結果は表示されなくても良い) ・計算式を入力して、表示させるのは計算結果 添付画像は、どちらなのでしょうか? ・今はこうだけど、別なものにしたい ・このようにしたい また、 > ActiveCell.Offset(0, 1) = s * t / 100 * u / 100 この計算式の、sとtとuは、どこから出てきたのでしょうか? このコードは、ちゃんと動いているのでしょうか?

rurumiko
質問者

お礼

ご回答ありがとうございます。 今後は正確でわりやすい質問を心がけたいと思います。

rurumiko
質問者

補足

すいません。 ActiveCell.Offset(0, 1) = s * t / 100 * u / 100 は ActiveCell.Offset(0, 1) = AA * Q / 100 * AB / 100 でした。 申し訳ございません。 今はこのコードで数値が表示されいるのですが 、計算式を入力して、表示させるのは計算結果が希望です。

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

>ActiveCell.Offset(0, 1) = s * t / 100 * u / 100       '製品の配合比率を計算(ここを数式にしたいです) 「12×2.4/100×5.6/100」みたいに表示したい、って話ですよね。 でしたら ActiveCell.Offset(0, 1) = CStr(s) & "*" & CStr(t) & "/100 *" & CStr(u) & "/100" って感じで値を全て文字列変換し、文字列として設定してしまえばいいんじゃないかと。

rurumiko
質問者

お礼

わかりにくい質問でしたのに、ご回答ありがとうございます。

関連するQ&A