- ベストアンサー
最終行までコピーする
A1「単価」,B1「数量」の表があります C1「売上」としてC2にa2*b2の式をいれc列の最終行までコピーしたいのです。A列、B列にブランクはありません。最終行は決まっていません 似たようなサンプルは見かけるのですがピタリのは見つけられませんでした。 当方まだマクロの入り口をウロウロしている程度なのでよろしくお願いします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ブランク行が無いなら Rangeオブジェクトの CurrentRegionを使う方法が使えるかと思います Sub Macro1() dim r as Range ' シートの B1セルを含む表の範囲を取得 Set r = ActiveSheet.Range("B1").CurrentRegion ' 取得した範囲のB列のみを取得 Set r = Intersect( r, ActiveSheet.Range("B:B")) if not r is Nothing then ' 取得した範囲の1列左を取得 set r = r.Offset( 0, 1 ) ' 取得した範囲の数式を設定 r.FormulaR1C1 = "=rc[-2] * rc[-1]" end if End Sub といった具合です
その他の回答 (1)
- miyuyu
- ベストアンサー率61% (30/49)
こんにちは。 これをきっかけにステップアップできれば幸いです。 但し、貴殿ご希望の通りかは不明ですのであしからず。 Sub Macro1() Dim iRow As Integer Dim bExit As Boolean Dim sFormula As String Application.ScreenUpdating = False iRow = 1 bExit = False Do iRow = iRow + 1 sFormula = Sheet1.Cells(iRow, 3).FormulaR1C1 If sFormula = "" Then If Sheet1.Cells(iRow, 1) = "" Then bExit = True iRow = iRow - 1 Else Sheet1.Cells(iRow, 3).FormulaR1C1 = "=RC[-2]*RC[-1]" End If End If Loop Until bExit = True Sheet1.Range(Cells(2, 3), Cells(iRow, 3)).Copy '' コピーした内容の処理 '' コピー範囲の破線を消したいときその処理をしてください Application.ScreenUpdating = True End Sub
補足
早速のお答えありがとうございます Sheet1.Range(Cells(2, 3), Cells(iRow, 3)).Copy の行で「rangeエラー」となります ご教授のほど、何分宜しくお願いいたします
お礼
ありがとうございました 私の考えていた通りの答えが出ました