Excel VBA ベーシック出題範囲
- マクロの概念
- マクロ記録
- モジュールとプロシジャー
- VBAの構文
- 変数と定数
- セルの操作
- ステートメント
- 関数
- ブックとシート操作 マクロの実行
サンプルプログラムの実行方法
6-1)セルを操作する
6-1-1)RanegとCallの使い方
Range: セルのアドレス範囲を指定します
Range (“セルアドレス”)
'Range ("セルアドレス") Range("B4") = " Range(""B4"") " Range("B5:D8") = " Range(""B5:D8"")" Range("B9,E9") = " Range(""B9,E9"") "
Cells: 行番号と列番号を使用してセルを指定します
Cells( 行,列 )
'Cellsプロパティ: 行番号と列番号を使用してセルを指定します 'Cells( 行,列 ) Cells(10, 2) = " Cells(10, 2) " Cells(11, "B") = "Cells(11, ""B"") " Cells(11, "C") = "Cells(11, ""C"") " '行を調べる時 '=COLUMN()
6-2)Valueプロパティ
‘Valueプロパティは、セルの中の値を表すプロパティです。
セルに値を書き込む
Dim a As String a = InputBox("名前") Range("F4").Value = a
セルの値を取り出す
a = Cells(4, 6).Value MsgBox "名前は" & a & "です"
B10の値を、D10に移す
Range(“D10”).Value = Range(“B10”).Value
計算式のセルは計算結果が表示されます
MsgBox “名前は” & Cells(4, 6).Value & “です”
6-2)Valueプロパティ
Valueプロパティは省略可能です
Range(“F4”) = 100
Range(“F4”).Value = 100
6-3)セルの様子を表すプロパティ
6-3-1)Textプロパティ
‘ TEXT プロパティは、セルの文字列を取り出します。
‘ TEXT プロパティは、読み取り専用です。
Dim s1 As String s1 = Range("C5").Text Debug.Print s1 Dim s2 As String s2 = Range("C6").Text Debug.Print s2
6-3-2)Fomulaプロパティ
‘ Formula プロパティは、セルの数式を取り出します。
‘ Formula プロパティは、数式をセルに書き込みます。
Range("F8").Formula = "=SUM(F5:F7)" Debug.Print Range("F8").Formula
6-4)別のセルを表すプロパティ
6-4-1)Offset
Offset プロパティは、基準となるセルから見て相対的に指定したセルを表します。
Range(“B5”).Offset(2, 1).Value = 100
6-4-2)Resizeプロパティ
Resizeプロパティは、基準となるセルから見て相対的に指定したセル範囲を表します。
Range(“F5”).Resize(4, 3).Value = 100
6-4-3)Endプロパティ
基準となるセルから、Endモードで移動するであろうセルを返す
End モード=Cntl+方向キーで、データで移動するであろうセルを示す
‘ ※途中に空白セルがあると、そこで止まる
移動する方向
上 xlUp
下 xlDown
左 xlToLeft
右 xlToRight
B4 から下方向の最後の行を示す
Debug.Print Range(“B4”).End(xlDown).Address
行の最大行数
Debug.Print Rows.Count
列の最大行数
Debug.Print Columns.Count
行の最大行数から、上方向にデータのあるセルを探す
Debug.Print Cells(Rows.Count, 2).End(xlUp).Address
列の最大列数から、左方向にデータのあるセルを探す
Debug.Print Cells(4, Columns.Count).End(xlToLeft).Address
6-4-4)CountRegionプロパティ
Ctrl + Shift + * アクティブセルを含むひと固まりのデータを示す。
Range(“E4”).CurrentRegion _
.Interior.Color = RGB(255, 255, 0)
6-5)セルを表すその他の単語
6-5-1)ActivCell
‘ActiveCellは、アクティブセルを示します
‘アクティブセルの存在するシートをアクティブシートという
‘アクティブセルの存在するブックをアクティブックという
ActiveCell.Value = “Active”
6-5-2)Selection
‘Selectinは、選択された範囲を示します
Selection.Value = “Selection”
6-6)セルのメソッド
6-6-1)Activate
セルをアクティベイトします。
Range(“B4”).Activate
6-6-2) Selectメソッド
セル範囲を選択します。
Range(“E4:G6”).Select
6-6-3) Copyメソッド
‘コピー元セル.copy コピー先
Range("B9").Copy Range("D9")
‘数式がコピーされる
Range("D10").Copy Range("D11")
‘Book間のCopy
Workbooks("bookdata.xlsx").Sheets("sheet1").Range("B2:B11").Copy _ Sheets("sheet1").Range("D3")
6-6-4) ClearContentsメソッド
セルの値をクリアする
Range(“B5”).ClearContents
6-6-5) Deleteメソッド
Deleteメソッドは、セルを削除します。
削除する時に、セルをシフトする方向を決めます。
‘左にシフト xlToLeft xlShiftToLeft
‘上にシフト xlUp xlShiftUp
Range(“F5”).Delete Shift:=xlToLeft
6-7)複数セル(セル範囲)の指定
セルの範囲指定
セルC6 ~C13 をクリア
Range(“C6:C13”).ClearComments でも可能です。
Rangeオブジェクトで指定が可能
Range( 左上のセル , 右下のセル)
Range(Range("C6"), Range("C13")).ClearComments
'データが増減しても、右下のセルを自動判別する
'右下セルの自動判別 Range("B2").End(xlDown)
MsgBox "右下アドレス" & Range("C6").End(xlDown).Address
Range(Range("C6"), Range("C6").End(xlDown).Address).ClearContents
6-8)行や列の指定
6-8-1)行を指定する
‘行を指定
Rows(5).Interior.Color = RGB(255, 255, 0)
‘行の中のセル全体を指定
Rows(“6:7”).Interior.Color = RGB(255, 128, 128)
‘行の中のセル全体を指定
Range(“8:9”).Interior.Color = RGB(128, 128, 255)
‘選択したセルの行を示す
Range(“B10”).EntireRow.Interior.Color = RGB(128, 255, 128)
6-8-2)列を指定する
‘列を指定
Columns(9).Interior.Color = RGB(0, 0, 128)
Columns(“J”).Interior.Color = RGB(0, 128, 0)
Columns(“K:L”).Interior.Color = RGB(128, 0, 0)
‘列の中のセル全体を指定
Range(“M:N”).Interior.Color = RGB(128, 128, 0)
‘選択したセルの列を示す
Range(“O1”).EntireColumn.Interior.Color = RGB(128, 128, 128)
まとめ
セルの操作
セルに値を設定
Range("A1").Value = "Hello, World!"
セルの値を取得
Dim value As String
value = Range("A1").Value
セルの色を変更
Range("A1").Interior.Color = RGB(255, 0, 0) ' RGB(赤, 緑, 青)
セルの書式を変更
' 数値の書式を小数点以下2桁まで表示
Range("A1").NumberFormat = "0.00"
セルの削除
セルを削除
Cells(行, 列).Delete
左方向にシフト
Cells(行, 列).Delete Shift:=xlToLeft
上方向にシフト
Cells(行, 列).Delete Shift:=xlUp
行全体
Cells(行, 列).EntireRow.Delete
EntireRowは、指定セルが含まれる行全体になります。
EntireRowは、RangeオブジェクトのプロパティでRangeオブジェクトを返します。
列全体
Cells(行, 列).EntireColumn.Delete
EntireColumnは、指定セルが含まれる列全体になります。
EntireColumnは、RangeオブジェクトのプロパティでRangeオブジェクトを返します。
セルの挿入
セルを挿入
Cells(行, 列).Insert
右方向にシフト
Cells(行, 列).Insert Shift:=xlToRight
下方向にシフト
Cells(行, 列).Insert Shift:=xlDown
行全体
Cells(行, 列).EntireRow.Insert
EntireRowは、指定セルが含まれる行全体になります。
列全体
Cells(行, 列).EntireColumn.Insert
EntireColumnは、指定セルが含まれる列全体になります
行・列の削除・挿入
行の削除
Rows(行位置).Delete
Cells(行, 列).EntireRow.Delete
行の挿入
Rows(行位置).Insert
Cells(行, 列).EntireRow.Insert
列の削除
Columns(列位置).Delete
Cells(行, 列).EntireColumn.Delete
列の挿入
Columns(列位置).Insert
Cells(行, 列).EntireColumn.Insert