1-10.セルの操作:セルが数値かどうか調べるには?

IsNumeric関数

IsNumeric(調べる対象)

セルに入っている値が数値かどうかは、IsNumeric関数を使って調べられます。引数にセルや値を指定すると、それが数値の場合にTrueを返します。

 セルに日付が入っている場合は注意が必要です。シリアル値の実体は数値ですが、セルに日付の表示形式が設定されていると、IsNumeric関数は日付を「数値ではない」と判断します。日付を調べるには、右のIsDate関数を使います。


アクティブセルが数値かどうかを判定する

Sub Sample()

If IsNumeric(ActiveCell.Value) Then

MsgBox “数値です。”

Else

MsgBox “数値ではありません。”

End If

End Sub

 

実行結果

 

1-09.セルの操作:セルや行、列を削除するには?

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

 

2022年9月9日

1-08.セルの操作:セルを結合するには?

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

 

実行結果

 

 

2022年9月9日

1-07.セルの操作:セルに格子の罫線を引くには?

Bordersコレクション LineStyleプロパティ

セル.Borders.LineStyle

セルに格子罫線を引く操作を「マクロの記録」機能を使って記録すると、膨大なコードが記録されます。しかしながら、標準的な格子の罫線を引くだけなら、下のサンプルコードのような1行で実現可能です。

 Bordersコレクションは、セルの上下左右などに分かれた個々の罫線を扱うものです。引数に個々の罫線を表す定数を指定しますが、引数を省略すると、格子の罫線全体を返します。そのため、Bordersコレクションの引数を省略してLineStyleプロパティをxlContinuous(直線)とすれば、格子状の直線の罫線を一発で引けます。

 なお、罫線を「なし」に設定するにはxlContinuousの代わりにxlLineStyleNoneを指定します。


B2 ~ E5セルの範囲に格子の罫線を引く

Sub Sample()

Range(“B2:E5”).Borders.LineStyle = xlContinuous

End Sub

 

実行結果

1-06.セルの操作:セルに色を設定するには?

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

 

実行結果

2022年9月9日

1-05.セルの操作:セルの表示形式を設定するには?

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日

 

2022年9月8日

1-04.セルの操作:日付のシリアル値を取得するには?

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

2022年9月8日

1-03.セルの操作:セルのデータを取得するには?

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

 

2022年9月8日

1-02.セルの操作:セルの値だけをコピーするには?

Valueプロパティ

コピー先のセル.Value = コピー元のセル.Value

 

「数式が入力されているセルから、その計算結果だけを別セルにコピーしたい」「セルの書式は除外して、中身の値だけをコピーしたい」。そんなとき、手動の操作では「形式を選択して貼り付け」を利用します。

 一方、VBAでは、セルの値や数式の結果をValueプロパティで取得できます。従って、Valueプロパティを別のセルに代入してやれば、値だけを別セルにコピーできることになります。値の代入は、「=」で行います。右辺の値が左辺に代入される点に注意してください。


D2セルに、B2セルの値だけをコピーする

Sub Sample()

Range(“D2”).Value = Range(“B2”).Value

End Sub

 

結果の値だけがD2セルへ入ります

2022年9月8日

1-01.セルの操作:セルをコピーするには?

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】口座開設のお申込みはこちら

2022年9月8日