Project_OKI’s diary

エンジニアの勉強ブログ

エクセルVBA2(VBAの実行と保存、A行をB行にコピー)

1.目的

  • エクセルでVBAを実行する方法について記載する。
  • エクセルでVBAを実行できるファイルを保存する方法について記載する。

 

目次

 

2.VBAの実行方法

 

 (1) 開発タブを表示する。
  (a) ファイル→オプションをクリック→リボンのユーザー設定
  (b) 開発のチェックを付ける。→OKをクリック

 (2) VBAプログラムの作成
  (a) 開発タブを表示→Visual Basicをクリック
  (b) 挿入→標準モジュールをクリック

   (c) エディタ画面に、プログラムを記載する場所が表示される。

  (d) VBAプログラムを記載する。

 (e) VBAのファイルを保存する場合は、保存をクリックする。

 (f) ファイルの種類をクリックし、xlsxではなく、VBAを有効にする場合は、xlsmの形式で保存する。

  通常のxlsxで保存すると次回開いた時に、VBAは消える。

 

 (3) VBAの実行

  (a)  開発タブ→マクロをクリック

 (b) 実行をクリック

 

3.VBAの基本的な書き方

 ここでは、VBAで使用する基礎的な知識を簡単に紹介する。

 

 (1) sub(サブプロシージャ)

 マクロを実行するための基本単位。 これがマクロを実行する時のマクロ名になる。

 ・Subで始まり、End Subで終わる。

 ・戻り値を持たない。

 書き方:

Sub マクロ名

 使用方法の例:

Sub CopyAtoB()
    ' ここに処理を書く
End Sub

 

 (2) Functionプロージャ(値を返す)

 Subプロージャの返り値を返す場合使用する。

 ・Functionで始まり、End Functionで終わる。

 ・戻り値を持つ。

 

書き方:

Function 関数名(引数) As 型
 処理
End Function

  使用方法の例: 

Function AddNumbers(a As Integer, b As Integer) As Integer
    AddNumbers = a + b  ' 2つの数を足して返す
End Function

 

 (2) 変数の宣言

 変数を使用する場合は、Dimを使用し、変数を宣言する。

 データ型を宣言する場合は、Asを使用する。

 書き方:

Dim 変数名 As 型名

 使用方法の例: 

Dim ws As Worksheet  ' ワークシートを扱う変数
Dim lastRow As Long  ' 最終行の番号を格納する変数

 

 (3)  データ型の種類

データ型 説明
Integer 整数(-32,768 〜 32,767)
Long 大きな整数(約21億まで)
String 文字列
Boolean True / False
Double 浮動小数点数(小数を含む)
Worksheet シートを扱うオブジェクト型

 

 (4) オブジェクトの操作

 VBAでは、ワークシートや、セルなどをオブジェクトとして操作する。

 オブジェクトに変数を代入すると、簡潔に記述可能。

 書き方:

Set オブジェクト名

  使用方法の例:

Set ws = ActiveSheet  ' 現在アクティブなシートを ws にセット

  ・ActiveSheetは、現在開いているシートを示す。

 ・Setを使って、wsというオブジェクトに、現在開いているシートをオブジェクトとして設定。

 

 (5) プロパティ

 VBAでは、オブジェクトの情報を設定、取得する際にプロパティを使用する。

 書き方:

オブジェクト.プロパティ

 使用方法の例:

・rにC5セルの行番号を取得し代入する。

Dim r As Long
r = Cells(5, 3).Row  ' C5セルの行番号(5)を取得

 ・Cells(5,3)  → C5のセルを指定

 ・.Row   → 行番号を取得

 

 (6) メソッド

  VBAでは、オブジェクトに対して実行できる動作(アクション)の指定として、メソッドを使用する。

 書き方

オブジェクト.メソッド()

  使用方法の例:

・rにA100から上方向に移動し、データがある最初のセルの行番号を取得

Dim r As Long  ' 行番号を格納する変数を宣言(データ型はLong)
r = Cells(100, 1).End(xlUp).Row  ' A100セルから上方向に移動し、データがある最初のセルの行番号を取得

  ※End(xlUp)は、Ctrl + ↑ キーと同じ動作をすることを示す。

 

4.VBAプログラム作成例

  3.A列の文字をB列にコピーするVBA
Sub CopyAtoB()
    Dim ws As Worksheet
    Dim lastRow As Long
    
    ' 現在のシートを取得
    Set ws = ActiveSheet
    
    ' A列の最終行を取得(空白を除く)
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    ' A列のデータをB列にコピー
    ws.Range("A1:A" & lastRow).Copy
    ws.Range("B1").PasteSpecial Paste:=xlPasteValues
    
    ' クリップボードをクリア
    Application.CutCopyMode = False
    
    MsgBox "コピーが完了しました!", vbInformation
End Sub

作成エクセルファイルVBA置き場:エクセルVBAファイル置き場 - aw007release