• ベストアンサー

最終行までコピーする

A1「単価」,B1「数量」の表があります C1「売上」としてC2にa2*b2の式をいれc列の最終行までコピーしたいのです。A列、B列にブランクはありません。最終行は決まっていません 似たようなサンプルは見かけるのですがピタリのは見つけられませんでした。 当方まだマクロの入り口をウロウロしている程度なのでよろしくお願いします

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.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 といった具合です

shinsuke
質問者

お礼

ありがとうございました 私の考えていた通りの答えが出ました

その他の回答 (1)

  • miyuyu
  • ベストアンサー率61% (30/49)
回答No.1

こんにちは。 これをきっかけにステップアップできれば幸いです。 但し、貴殿ご希望の通りかは不明ですのであしからず。 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

shinsuke
質問者

補足

早速のお答えありがとうございます Sheet1.Range(Cells(2, 3), Cells(iRow, 3)).Copy の行で「rangeエラー」となります ご教授のほど、何分宜しくお願いいたします

関連するQ&A

専門家に質問してみよう