エクセルVBAのプログラムを作成時に頻繁に使用するコードをまとめて紹介します。
これからエクセルVBAでコードを勉強する人や、使用頻度が高いコードを知りたい方におすすめの記事です。
目次から目的の操作のコード説明にジャンプしてください。
「シート名」や「セルの範囲設定」はご自分の適応したい箇所に合わせて変更ください。
セルに値を入力する
このコードはエクセルVBAのコードにおいて、一番よく使うコードです。
Worksheets("Sheet1").Cells(1,1).Value="入力する値"
Worksheets("Sheet1").Range("A2:B2").Value="入力する値" 'A2セルとB2セルに入力
3行目のコードは範囲を指定して範囲内のセルに値を入れることができます。
値を入れるだけでなく、セルの値を変数などに代入する(取り出す)ときにも使用することができます。
OUTSTR=Worksheets("Sheet1").Cells(1,1).Value
MSGBOX OUTSTR
上記コードを実際にエクセルで実行した場合は下記の画像になります。
セルに罫線を設定する
次に紹介するのは、セルの指定範囲に格子で罫線を引くコードです。
一覧表形式でデータを表示するシートの最終行にデータを追加した場合などに格子で罫線を引く場合が多いです。
Worksheets("Sheet1").Range("A2:B3").Borders.LineStyle = True 'A2からB3セルまでの範囲に罫線
実際に実行した結果は下の画像です。
Borders.LineStyleプロパティをTrueにすると設定でき、Borders.LineStyleをFalseにすると罫線を無しにできます。
格子以外の罫線の操作は下記リンクのサイトが参考になります。
セルに塗りつぶしをする
次に紹介するのはセルに塗りつぶしを実施する方法です。
データが重複しているときや、新たに追加したデータなどにセルに塗りつぶしをすることが多いです。
Worksheets("Sheet1").Range("A3:B3").Interior.ColorIndex = 3 'A3からB3セルまでの範囲に塗りつぶし
Worksheets("Sheet1").Range("A4:B4").Interior.Color = vbYellow 'A4からB4セルまでの範囲に塗りつぶし
Worksheets("Sheet1").Range("A5:B5").Interior.Color = RGB(255, 128, 255) 'A5からB5セルまでの範囲に塗りつぶし
上記のコードを実行した結果の画像はこちら
2行目のコードで、vbYellow以外の色は下記の表を参照ください。
色定数 | 色 |
vbBlack | 黒 |
vbRed | 赤 |
vbGreen | 緑 |
vbYellow | 黄 |
vbBlue | 青 |
vbMagenta | マゼンタ |
vbCyan | シアン |
vbWhite | 白 |
2行目のコードでは8色しか指定できないので、一番実用的なのは、1行目のColorIndexです。
ColorIndexは「エクセルの色パレットに登録している番号」での塗りつぶし色指定となります。
基本的にはデフォルト値で使用している人が多いと思いますが、カスタマイズされているデバイスでは違う色が塗りつぶしされる可能性があるのでご注意ください。
デフォルト設定での一覧表を作成しましたので、参考にしてみてください。
上記一覧表をSheet2に作成するためのコードはこちらです。
Sub sheet2_color_list()
Dim index As Integer
Dim R, G, B As Integer
Dim mycolor As Variant
index = 1
With Worksheets("Sheet2")
.Cells(1, 1).Value = "塗りつぶし色"
.Cells(1, 2).Value = "colorIndex"
.Cells(1, 3).Value = "RGB"
.Cells(1, 4).Value = "color"
Do Until index > 56
.Cells(index + 1, 1).Interior.ColorIndex = index
.Cells(index + 1, 2).Value = index
mycolor = .Cells(index + 1, 1).Interior.Color
R = mycolor Mod 256
G = Int(mycolor / 256) Mod 256
B = Int(mycolor / 256 / 256)
.Cells(index + 1, 3).Value = "RGB(" & CStr(R) & "," & CStr(G) & "," & CStr(B) & ")"
.Cells(index + 1, 4).Value = mycolor
index = index + 1
Loop
.Range("A1:D" & index).Borders.LineStyle = True
.Range("A1:C" & index).HorizontalAlignment = xlCenter
.Range("D1").HorizontalAlignment = xlCenter
.Columns("A:D").AutoFit
End With
End Sub
ColorIndexで指定できるのは56色ですので、それ以上やColorIndex以外の色を使用したい場合にはRGB関数を使用して自分好みの色を指定できます。
RGB関数は()の中に左から赤,緑,青の数値を0~255の間で、カンマ区切りにて指定します。RGB(0,0,0)は黒色で、RGB(255,255,255)が白色になります。
「塗りつぶしなし」について説明します。
塗りつぶしなしにするためには、下記のコードを使用してください。
Worksheets("Sheet1").Range("B3").Interior.ColorIndex = xlNone 'B3セルに塗りつぶし無し設定
Worksheets("Sheet1").Range("B4").Interior.Color = xlNone 'B4セルに塗りつぶし無し設定
上記コードを実行した結果は下記画像です。先ほど塗りつぶしをしていたB3とB4セルを「塗りつぶし無し」に設定することができました。
注意しないといけないのは、xlNoneと白色塗りつぶしは違うことです。
もし、IF文で塗りつぶしの有無を判定をする場合には、下記のように記述する必要があります。
If Worksheets("Sheet1").Range("B3").Interior.ColorIndex = xlNone Then
'B3セルが塗りつぶ無しだった時の処理を記述
Else
'B3セルが塗りつぶしされているときの処理を記述
End If
セル内の文字の色を変更する
セル内の文字の色を変更するにもColorIndexを使用することができます。
ここまで目次からジャンプしてきた方は上へスクロールしてColorIndexについての説明をご確認ください。
Worksheets("Sheet1").Range("A1").Font.ColorIndex = 3 'A1セルのフォントを赤色に設定
上記コードを実行した結果は下記画像となります。
セル内の文字の配置を変更する
セル内の文字の配置を変更する方法を説明します。
文字の配置は、セルの書式設定メニュー内の「配置タブ」に含まれる項目です。
今回はよく使う文字の配置と文字の制御のコードを紹介します。
まずは水平方向の設定コードです。
Worksheets("Sheet1").Range("A1").HorizontalAlignment = xlCenter 'A1セルの文字配置を水平方向中央揃えに設定
水平方向は「標準」か「中央揃え」の使用頻度が高いです。
水平方向 | エクセル定数 |
---|---|
標準 | xlGeneral |
左詰め | xlLeft |
中央揃え | xlCenter |
右詰め | xlRight |
繰り返し | xlFill |
両端揃え | xlJustify |
選択範囲内で中央 | xlCenterAcrossSelection |
均等割り付け | xlDistributed |
続いて垂直方向の設定コードです。
Worksheets("Sheet1").Range("A1").VerticalAlignment = xlCenter 'A1セルの文字配置を垂直方向中央揃えに設定
垂直方向は中央揃えの使用頻度が高いです。
垂直方向 | エクセル定数 |
---|---|
上詰め | xlTop |
中央揃え | xlCenter |
下詰め | xlBottom |
繰り返し | xlFill |
両端揃え | xlJustify |
均等割り付け | xlDistributed |
次に文字の制御の設定コードです。
Worksheets("Sheet1").Range("A1").ShrinkToFit = True 'A1セルを縮小して全体を表示に設定
Worksheets("Sheet1").Range("A2").WrapText = True 'A2セルを折り返して全体を表示に設定
Worksheets("Sheet1").Range("A3:B3").MergeCells = True 'A3とB3セルをセル結合する
文字制御のプロパティ=TrueでOn,=FalseでOffにすることができます。
文字制御 | プロパティ |
縮小して全体を表示 | ShrinkToFit |
折り返して全体を表示 | WrapText |
セルを結合する | MergeCells |
実行した結果画像です。結果が分かりやすいようにセルの幅などは手動で変更しています。
セル内の表示形式を変更する
セル内の表示形式を変更する方法を説明します。
セルの書式設定メニュー内の「表示形式」で設定できる項目です。
今回はよく使う「文字列」と「日付」に設定するコードを紹介します。
それ以外の書式はユーザー定義を参考にNumberFormatLocalプロパティに設定してください
まずは表示形式を文字列を設定する方法を紹介します。
セルの表示形式を文字列にする必要がある場面は、データベースなどから桁数の決まった数字で構成されているデータを取得し、先頭が0になっているデータが含まれる時です。
文字列設定されていないと先頭の0が除去されてしまいます。
NumberFormatLocalプロパティに書式用の文字を組み合わせて利用します。
Worksheets("Sheet1").Range("B6").NumberFormatLocal = "@" 'B6セルの表示形式を文字列に設定
下記画像は、上記コードで文字列設定したセルに0が先頭にあるデータを入力した結果画像です。
表示形式を日付に設定する方法を紹介します。
Worksheets("Sheet1").Range("B9").NumberFormatLocal = "yyyy/m/d" 'B9セルの表示形式を設定
Worksheets("Sheet1").Range("B10").NumberFormatLocal = "yy/mm/dd" 'B10セルの表示形式を設定
Worksheets("Sheet1").Range("B11").NumberFormatLocal = "yyyy年m月" 'B11セルの表示形式を設定
Worksheets("Sheet1").Range("B12").NumberFormatLocal = "yyyymmdd" 'B12セルの表示形式を設定
上記コードを使用して実行した結果はこちらです。
注意 表示される形式が変わっているだけでセルの値は2022/10/16のような日付のデータです。コピーして他のセルに値の貼り付けをした場合には、日付シリアル値が貼り付けられます。
セル内に数式を入力する
セル内に数式を入力する方法を説明します。
データなどを追加した行に集計用の数式を入力するなど、数式を設定したい場合にこの方法を使用します。
formulaプロパティに”ダブルクォーテーション”で括った数式を入力します。
Worksheets("Sheet1").Range("B13").Formula = "=COUNTA(B9:B12)" 'B13セルに数式を設定
実際に上記コードを使用した場合の画像はこちら
セルの値をクリア&セルをクリアする
最後にセルの内容を消去する方法を紹介します。
セルの値や数式を消去したい場合には下記のコードを使用します。
表示形式や罫線などの書式は保持されます。
Worksheets("Sheet1").Range("B13").ClearContents 'B13セルの値や数式をクリア
表示形式や罫線まで全部消去したい場合には下記のコードを使用します。
Worksheets("Sheet1").Range("B13").Clear 'B13セルをクリア
実際に実行した結果はこちら
書式まで全部消去する場合にはClear、書式を残したい場合にはClearContentsを使用してください。
最後に
セル操作でよく使うコードを説明させていただきました。
上記コードでVBAプログラム作成時のセル操作は9割以上カバーできると思います。
ブックマーク登録やリンクして困ったときにすぐにアクセスできるようにしておいてください。
また、役立つ記事だと思われた方は、ほかの方にも共有いただければ嬉しいです。
ほかにもエクセルVBAをつかった事例の記事もありますので読んでいただければ幸いです。
コメント