目次
概要
ExcelのVBAにおいて、よく使いそうなサンプルコードを記載します。
Excel(エクセル) VBAサンプルコード一覧
シートを保護する・シートの保護を解除する
ActiveSheet.Protect'シートの保護
ActiveSheet.Unprotect'シートの保護解除
シートの保護、あるいは保護を解除します。
印刷する
シートを指定して印刷する
Sheets("シート名").PrintOut
指定のシートを印刷します。
ページと枚数を指定して印刷する
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1
アクティブウインドウの選択しているシートをページ指定で印刷します。
このため通常のクイック印刷に近い操作感になるかと思います。
「From」と「To」の数字にて、「何ページから何ページまで」を指定できます。
サンプルでは1ページのみを印刷します。
印刷に際して、用紙のサイズや向きなどを指定する
ActiveSheet.PageSetup.PaperSize = xlPaperA4 ' A4の用紙サイズを設定
Cells.Font.Size = 10 'フォントサイズを設定
Cells.RowHeight = 15 '全ての行の高さを設定
Cells.ColumnWidth = 10 '全ての列の高さを設定
ActiveSheet.PageSetup.Orientation = xlLandscape '用紙の向きを横向きに設定
用紙設定を行います。
通常、用紙設定をVBAで行うことは少ないかと思います。
考えられるケースとしては、1つのデータを複数の書式で出力したい場合が考えられます。
アクティブセルを塗りつぶす
ActiveCell.Interior.Color = 255 '赤
ActiveCell.Interior.Color = 16711680 '青
ActiveCell.Interior.Color = 32768 '緑
ActiveCell.Interior.Color = 65535 '黄
ActiveCell.Interior.Color = 0 '黒
文字通りアクティブセルを塗りつぶします。
一例として5色挙げています。任意の色を選択してエディターに記述します。
その他の色についてもマクロの記録で値を取得すれば再現可能です。
セルに値を入力する
ActiveCell.Value = "任意の値"
文字通り、アクティブセルに任意の値を入力します。
メッセージボックス
メッセージボックスを表示する
MsgBox "ここにメッセージ"
文字通り、任意のテキストをメッセージボックスに表示します。
メッセージボックスにて条件分岐で処理をする(If)
Dim rc As VbMsgBoxResult
rc = MsgBox("メッセージ", vbYesNo + vbQuestion)
If rc = vbYes Then
'処理1
Else
'処理2
End If
メッセージボックスでの回答に応じて、処理を分岐させます。
別の処理を呼び出す
Call 呼び出したい処理の名前
「call」により既存の処理を呼び出すことができます。
コードをまとめたり、メンテナンス性を高める上でよく使うコードかと思います。
指定のシートやセルをアクティブにする
Sheets("シート名").Select
Range("A1").Select
上記の例では指定したシートのA1セルをアクティブにします。
セルの値を別のセルに貼り付ける
Worksheets("シート1").Range("A1").Copy
Worksheets("シート2").Range("A1").PasteSpecial Paste:=xlPasteValues
指定のシートの指定のセルの値を、別のシートのセルに貼り付けます。
上記では「xlPasteValues」、つまり値のみ貼り付け書式に干渉しないようにしています。
セルの値が変更されたら動作するVBA
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1")) Is Nothing Then
Exit Sub
Else
MsgBox "セルの値が変更されました"
End If
End Sub
指定のセルに変更が加えられた場合にVBAが動作するようにします。
上記の例ではセルA1に変更があった場合にメッセージボックスが起動するようにしています。
適宜、ターゲットとなるセルを変えたり、処理をメッセージボックスではなく別の内容に書き変えることで応用がきくでしょう。
使用者が入力することでデータが出力されるようなフォーマットを作ることもできるでしょう。
このコードは標準モジュールではなく、適用したいシートに貼り付けることになります。
ユーザーフォームの操作
ユーザーフォームを呼び出す
UserForm1.Show
作成した指定のユーザーフォームを呼び出します。
ユーザーフォームを閉じる
Unload Me
ユーザーフォームを閉じます。