IsNumeric関数
IsNumeric(調べる対象)
セルに入っている値が数値かどうかは、IsNumeric関数を使って調べられます。引数にセルや値を指定すると、それが数値の場合にTrueを返します。
セルに日付が入っている場合は注意が必要です。シリアル値の実体は数値ですが、セルに日付の表示形式が設定されていると、IsNumeric関数は日付を「数値ではない」と判断します。日付を調べるには、右のIsDate関数を使います。
アクティブセルが数値かどうかを判定する
Sub Sample()
If IsNumeric(ActiveCell.Value) Then
MsgBox “数値です。”
Else
MsgBox “数値ではありません。”
End If
End Sub
実行結果


Deleteメソッド
セル.Delete
セルや行、列を削除するにはDeleteメソッドを使います。セルやセル範囲を削除する場合、標準では削除した分、その下のセルが上に詰められます。右側のセルを左に詰めたいときは、「Shift:=xlToLeft」と引数を指定します。
行や列を削除するには、「Range(”6:8″).Delete」(6~8行目を削除)や「Range(”A:C”).Delete」(A~C列を削除)のようにRangeを使う方法のほか、EntireRowプロパティまたはEntireColumnプロパティを使う方法などがあります。
行を削除すると下の行が上に詰められ、列を削除すると右の列が左に詰められます。
A列全体を削除する
Sub Sample()
Range(“A:A”).Delete
End Sub

Mergeメソッド
セル範囲.Merge
セル範囲を結合するには、セル範囲を表すRangeオブジェクトに対してMergeメソッドを実行します。結合したセルに値を入力するには、結合した範囲の左上隅に位置するセルに、値を代入します。ツールバーにある「セルを結合して中央揃え」ボタンと違って、Mergeメソッドは結合するだけなので、文字列の中央揃えは行いません。
なお、結合されている範囲は、MergeAreaプロパティで取得できます。RangeオブジェクトのMergeCellsプロパティは、そのセルが結合されているとTrueを返します。セルの結合を解除するときは、UnMergeメソッドを実行します。
B2 ~ E4セルの範囲を結合する
Sub Sample()
Range(“B2:E4”).Merge
Range(“B2”).Value = “Jam&Momo”
End Sub
実行結果


Bordersコレクション LineStyleプロパティ
セル.Borders.LineStyle
セルに格子罫線を引く操作を「マクロの記録」機能を使って記録すると、膨大なコードが記録されます。しかしながら、標準的な格子の罫線を引くだけなら、下のサンプルコードのような1行で実現可能です。
Bordersコレクションは、セルの上下左右などに分かれた個々の罫線を扱うものです。引数に個々の罫線を表す定数を指定しますが、引数を省略すると、格子の罫線全体を返します。そのため、Bordersコレクションの引数を省略してLineStyleプロパティをxlContinuous(直線)とすれば、格子状の直線の罫線を一発で引けます。
なお、罫線を「なし」に設定するにはxlContinuousの代わりにxlLineStyleNoneを指定します。
B2 ~ E5セルの範囲に格子の罫線を引く
Sub Sample()
Range(“B2:E5”).Borders.LineStyle = xlContinuous
End Sub
実行結果


Colorプロパティ
セル.Font.Color = RGB(赤, 緑, 青)
セル.Interior.Color = RGB(赤, 緑, 青)
セル内の文字色はFontオブジェクトのColorプロパティで、塗りつぶしの色はInteriorオブジェクトのColorプロパティで設定できます。色の指定にはRGB関数を利用できます。赤、緑、青という3原色の濃さを0~255の数値でそれぞれ指定します。Excel 2003までは最大56色しか使えませんでしたが、Excel2007以降は最大1600万色が使えるため、多彩な色を使うことができます。
Excel 2007以降では、TintAndShadeプロパティを使うことで、色の明暗を-1~1の間で指定することが可能です。またObjectThemeColorプロパティを使って、「テーマ」の色を利用することもできます。
文字色を赤にし、薄い青の塗りつぶしを設定
Sub Sample()
With Range(“B2”)
.Font.Color = RGB(255, 0, 0)
.Interior.Color = RGB(0, 100, 255)
.Interior.TintAndShade = 0.7
End With
End Sub
実行結果

NumberFormatLocalプロパティ
セル.NumberFormatLocal = 書式記号
セルに表示形式を設定するには、RangeオブジェクトのNumberFormatLocalプロパティに、設定したい表示形式の書式記号を設定します。書式記号の書き方は、「セルの書式設定」ダイアログで「ユーザー定義」を指定する際と基本的に同じです。ただし、全体を「”」で囲んで指定するため、書式記号内に文字列を指定する際は、「”」を2個つなげて「””」のように入力する必要があります。
様々な通貨表示と日付を設定
Sub Sample()
Range(“B2”).NumberFormatLocal = “\#,##0”
Range(“B3”).NumberFormatLocal = “00000”
Range(“B4”).NumberFormatLocal = “0.00”
Range(“B5”).NumberFormatLocal = “#,##0″”円”””
Range(“B6”).NumberFormatLocal = “#,##0,””千円”””
Range(“D2”).NumberFormatLocal = “yy/m/d(aaa)”
Range(“D3”).NumberFormatLocal = “yyyy””年””m””月”””
Range(“D4”).NumberFormatLocal = “ggge””年”””
Range(“D5”).NumberFormatLocal = “e””年””m””月””d””日”””
End Sub
実行結果

表●書式記号の記述例
≪書式記号≫ |
≪数値の場合≫ |
“00000” |
01234 |
“0.00” |
1234.00 |
“#,##0″”円””” |
1,234円 |
“#,##0,””千円””” |
1千円 |
≪書式記号≫ |
≪日付の場合≫ |
“yy/m/d(aaa)” |
22/9/8(月) |
“yyyy””年””m””月””” |
2022年9月 |
“ggge””年””” |
令和4年 |
“e””年””m””月””d””日””” |
4年9月8日 |
Value2プロパティ
セル.Value2
セルにシリアル値が入力されているとき、Valueプロパティは「2022/09/08」のような日付データを返します。この形式は、Windowsのコントロールパネルにある「地域と言語」の設定における標準の日付形式(短い形式)に準拠しています。
Excelが管理する日付の実体であるシリアル値(「41694」などの数値)は、Value2プロパティで取得できます。
日付の入ったセルからシリアル値を取得する
Sub Sample()
MsgBox _
“Valueプロパティでは ” & Range(“B2”).Value & vbCrLf & _
“Textプロパティでは ” & Range(“B2”).Text & vbCrLf & _
“Value2プロパティでは ” & Range(“B2”).Value2
End Sub


Valueプロパティ / Textプロパティ
セル.Value / セル.Text
セルに入っている値はValueプロパティで取得できます。Valueプロパティは、セルに入っている“値そのもの”なので、表示形式は無視されます。表示形式も反映された、セルに“表示されている文字列”を取得するには、Textプロパティを使います。
右のサンプルコードでは、コンマ区切りの数値が入っているA1セルと、日付が入ったA3セルについて、それぞれValueプロパティとTextプロパティで値を取得しています。日付の場合、Valueプロパティの結果はシリアル値ではなく、yyyy/mm/dd形式の日付データとなります。
なお、vbCrLfは改行を表す定数です。
ValueプロパティとTextプロパティが返す結果を表示
Sub Sample()
MsgBox _
“数値のValueプロパティは ” & Range(“B2”).Value & vbCrLf & _
“数値のTextプロパティは ” & Range(“B2”).Text & vbCrLf & _
“日付のValueプロパティは ” & Range(“B4”).Value & vbCrLf & _
“日付のTextプロパティは ” & Range(“B4”).Text
End Sub


Valueプロパティ
コピー先のセル.Value = コピー元のセル.Value
「数式が入力されているセルから、その計算結果だけを別セルにコピーしたい」「セルの書式は除外して、中身の値だけをコピーしたい」。そんなとき、手動の操作では「形式を選択して貼り付け」を利用します。
一方、VBAでは、セルの値や数式の結果をValueプロパティで取得できます。従って、Valueプロパティを別のセルに代入してやれば、値だけを別セルにコピーできることになります。値の代入は、「=」で行います。右辺の値が左辺に代入される点に注意してください。
D2セルに、B2セルの値だけをコピーする
Sub Sample()
Range(“D2”).Value = Range(“B2”).Value
End Sub


結果の値だけがD2セルへ入ります
Copyメソッド
セル.Copy コピー先
セルをコピーするには、Copyメソッドを使います。
コピー元のセルをRangeやCellsを使って指定した後、「.Copy」と続けて、その後ろにコピー先のセルを指定します。
コピーする対象が「Range(”B2:C3″)」のようにセル範囲である場合も、コピー先は、範囲の左上隅に当たるセルを1つ指定すればOKです。
コピー元やコピー先に別シートを指定することも可能です。その場合は、「Sheets(”Sheet1″).Range(”A1″)」のように、ピリオドでつないでシートを指定します。
このようにシートを指定しない場合は、アクティブシートのセルと見なされます。
B2セルをC2セルへコピーする
Sub Sample1()
Range(“B2”).Copy Range(“C2”)
End Sub


B2 ~ C3セルを、Sheet2のB2 ~ C3セルへコピーする
Sub Sample2()
Range(“A1:C3”).Copy Sheets(“Sheet2”).Range(“B3”)
End Sub




IT開発関連書とビジネス書が豊富な翔泳社の通販『SEshop』はこちら

業界最安値宣言!高性能・低価格のパソコン通販は【UsedFun】

【DMM FX】口座開設のお申込みはこちら
