[ExcelVBA初心者必見]セル操作によく使うコード8選 | 独学プログラマーHiroのパーツボックスblog

[ExcelVBA]セル操作によく使うコード8選

EXCEL
スポンサーリンク

エクセル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は「エクセルの色パレットに登録している番号」での塗りつぶし色指定となります。

基本的にはデフォルト値で使用している人が多いと思いますが、カスタマイズされているデバイスでは違う色が塗りつぶしされる可能性があるのでご注意ください。

デフォルト設定での一覧表を作成しましたので、参考にしてみてください。

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が先頭にあるデータを入力した結果画像です。

numberformatlocalで文字列設定した結果画像

表示形式を日付に設定する方法を紹介します。

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セルの表示形式を設定

上記コードを使用して実行した結果はこちらです。

numberformatlocalの日付設定した結果画像

注意 表示される形式が変わっているだけでセルの値は2022/10/16のような日付のデータです。コピーして他のセルに値の貼り付けをした場合には、日付シリアル値が貼り付けられます。

セル内に数式を入力する

セル内に数式を入力する方法を説明します。

データなどを追加した行に集計用の数式を入力するなど、数式を設定したい場合にこの方法を使用します。

formulaプロパティに”ダブルクォーテーション”で括った数式を入力します。

Worksheets("Sheet1").Range("B13").Formula = "=COUNTA(B9:B12)"  'B13セルに数式を設定

実際に上記コードを使用した場合の画像はこちら

fomulaで数式を設定した結果画像

セルの値をクリア&セルをクリアする

最後にセルの内容を消去する方法を紹介します。

セルの値や数式を消去したい場合には下記のコードを使用します。

表示形式や罫線などの書式は保持されます。

Worksheets("Sheet1").Range("B13").ClearContents   'B13セルの値や数式をクリア

表示形式や罫線まで全部消去したい場合には下記のコードを使用します。

Worksheets("Sheet1").Range("B13").Clear   'B13セルをクリア

実際に実行した結果はこちら

Clearとclearcontensの実行結果画像

書式まで全部消去する場合にはClear、書式を残したい場合にはClearContentsを使用してください。

最後に

セル操作でよく使うコードを説明させていただきました。

上記コードでVBAプログラム作成時のセル操作は9割以上カバーできると思います。

ブックマーク登録やリンクして困ったときにすぐにアクセスできるようにしておいてください。

また、役立つ記事だと思われた方は、ほかの方にも共有いただければ嬉しいです。

ほかにもエクセルVBAをつかった事例の記事もありますので読んでいただければ幸いです。

コメント

タイトルとURLをコピーしました