あなたの質問への最も簡単な解決策は次のようになります。
With ThisWorkbook.Worksheets("Custom Systems")
.Range("G16").Value = .Range("G16").Value * .Range("c8").Value
End With
または
With ThisWorkbook.Worksheets("Custom Systems")
Set RngData = .Range("G16")
Set RngNum = .Range("c8")
RngData.Value = RngData.Value * RngNum.Value
End With
(.Value
がデフォルトプロパティなので、保存したい場合には省略することができます一部の文字を入力中)
RngData
の範囲が単一のセルでない場合、上記の方法は機能しません。そのような状況では、各セルを繰り返し処理します。
Dim oneCell As Range
With ThisWorkbook.Worksheets("Sheet1")
Set rngdata = .Range("G11:G27")
Set rngnum = .Range("C6")
For Each oneCell In rngdata
oneCell.Value = oneCell.Value * rngnum.Value
Next
End With
また、組み込みの[貼り付け特殊値の乗算]メソッドを使用することもできます。
With ThisWorkbook.Worksheets("Sheet1")
Set rngdata = .Range("G11:G27")
Set rngnum = .Range("C6")
rngnum.Copy
rngdata.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlMultiply
End With
それとも、そのような状況でEvaluate
機能を使用することができますが:個人的に
With ThisWorkbook.Worksheets("Sheet1")
Set rngdata = .Range("G11:G27")
Set rngnum = .Range("C6")
'Note: The ".Value" is required in the next line or it will not work
rngdata.Value = Evaluate(rngdata.Address & "*" & rngNum.Address)
End With
、私はEvaluate
方法を好きではない - 私はそれが他の方法よりも効率が悪いと思います。
私はあなたが求めているものは正確ではありません。価値を得るために2つのセルを掛けようとしていますか?あなたは 'rngData = Evaluate(rngData.Address&" * rngNum ")'で何を達成しようとしていますか? – PartyHatPanda
'rngData =評価(rngData.Address&" * "&rngNum.Address)'しかし、@ YowE3kの回答が良い方法です。 –
@ScottCraner - VBAは奇妙です!あなたの提案はうまくいくようですが、 '.Value'を追加した場合、つまり' rngData.Value = Evaluate(rngData.Add ress& "*"&rngNum.Address) 'のように表示されます。 – YowE3K