Excel VBA を使って式のコピーを行う
Excel VBAを使った表作成において、式のコピーは非常に便利な機能です。表の自動化を考える上で、重要なスキルといえるでしょう。本記事では、Excel VBAを使って式のコピーを行う方法について、詳しく解説します。
まず、Excel VBAを使った式のコピーには、Copyメソッドを使用します。Copyメソッドは、Rangeオブジェクトを指定して、指定したセルの内容をクリップボードにコピーします。以下は、Copyメソッドの基本的な使い方です。
Range(“コピー元のセル").Copy Destination:=Range(“コピー先のセル")
このコードを使用することで、指定したセルの内容がクリップボードにコピーされ、その内容を別のセルに貼り付けることができます。詳細につきましては以下をご覧ください。
サンプルアプリの使い方
このサンプルアプリでは、下の絵にある「合計欄の式をコピー」ボタンをクリックすると、E6セルに入っている式(=C6*D6)が下の欄にコピーされます。コピーされた式によって自動的に合計欄に数字が入ります。
式が入ると合計欄が自動計算され下のように数字が入ります。
Copyメソッド処理内容
Copyメソッドは、RangeオブジェクトのCopyメソッドと引数「Destination」を使用することで、式を簡単にコピーすることができます。以下のコードを使って、貼り付け先のセル範囲を指定します。
wS.Range(“コピー元のセル").Copy Destination:=wS.Range(“コピー先のセル")
もし引数を省略すると、コピーしたセル範囲がクリップボードに格納されます。そのため、別途PasteメソッドあるいはPasteSpecialメソッドを使用して、貼り付けるためのコードを記述する必要があります。
コピーした後は、コピーしたセル範囲がクリップボードに残り、貼り付け先を選択する前に何らかの操作を行ってしまうと、誤った場所に貼り付けてしまう可能性があります。そのため、コピーが完了したら、クリップボードの内容を解除しておく必要があります。以下は、コピー状態を解除するコード例です。
Application.CutCopyMode = False
RangeオブジェクトのCopyメソッドの詳しい解説については下記リンク先をご覧ください。
https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.copy
サンプルアプリのコード アプリの作成手順はこちら
Option Explicit
Sub ボタン1_Click()
'データ最終行を入れる変数を定義
Dim myLast As Long
'シート名を入れる変数の定義
Dim wS As Worksheet
'変数 wS にシート名「Sheet1」をセット
Set wS = Worksheets("Sheet1")
'データ最終行(電源ケーブルのセル)を取得
myLast = wS.Cells(Rows.Count, 2).End(xlUp).Row
'E6セルにセットした式をE7~E16セルまでコピー
wS.Range("E6:E6").Copy Destination:=wS.Range("E7:E16")
'17行目の合計欄に式をセット
wS.Cells(myLast + 1, 5) = "=SUM(E6:E16)"
'コピーモードを解除
Application.CutCopyMode = False
'E17のセルを選択して終了
Range("E17").Select
End Sub
ディスカッション
コメント一覧
まだ、コメントがありません