エクセルVBAでの「値貼り付け、乗算」について
あるセル範囲に一度に一定の数を乗ずるには、その一定の数が入力されたセルをコピーしてから、形式を選択して貼り付けで、値貼り付け、そして「乗算」を指定するのがもっとも効率的かと思います。
これをVBAで行う場合、以下のようなコードになるかと思います。
Sub test05()
Dim z As Range
Set z = ActiveCell.SpecialCells(xlLastCell).Offset(1)
z.Value = 2
z.Copy
On Error GoTo line
Range("A1:H3000").SpecialCells(xlCellTypeConstants, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply
On Error GoTo 0
Application.CutCopyMode = False
z.Clear
Set z = Nothing
Exit Sub
line:
MsgBox "対象内に数値がありません。"
End Sub
上記コードは正しく作動します。
質問は、「その一定の数が入力されたセルをコピーしてから」の部分を、他の方法で代用できないかということです。上記コードでは最終セルのひとつ下、SpecialCells(xlLastCell).Offset(1)を使用していますが、SpecialCells(xlLastCell).Offset(1)が存在しない場合も理論上はありえます。
わざわざセルに転記し、それをコピーする代わりに、コード内で乗じる数を指定できないのでしょうか?
お礼
拡張2Dでやってみたらズレずにできました!! なにが原因でズレてしまったのかわからないのですが出来て本当に良かったです。 親身になってくださりとても嬉しかったです、有難う御座いました!