Excel VBAの「CByte 関数」について解説します。
CByte 関数とは
Excel VBA の CByte 関数は、引数をByte型に変換して返します。
Byte 型は、8 ビットの符号なし 2 進数で、0 から 255 までの整数を表すためのデータ型です。
CByte 関数は、引数を特定のデータ型に強制的に変換するデータ型変換関数のひとつです。
では、CByte 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。
CByte 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
CByte(expression)
引数
引数 | 説明 |
---|---|
expression | 【必須】任意の文字列式または数式を指定します |
戻り値
戻り値 | 説明 |
---|---|
Byte型の結果 | バイト型(Byte)は 0~255 の整数値です 引数を評価してバイト型(Byte)を返します ※ 引数が小数の場合、整数に四捨五入します ※ 0~255 の範囲外はオーバーフローエラーです ※ 数値と認識できない場合 エラー13 が発生します |
解説(使用例)
CByte 関数のサンプルコードを使って解説します。
RGB 値は 0~255 の範囲の整数値ですので Byte 型 です。
CByte 関数の引数と戻り値を確認するサンプル
CBool 関数にいろいろな引数をセットしてその戻り値をイミディエイトに表示するサンプルです。
'■CByte関数サンプル
Sub CByte_Sample()
Dim v As Variant
On Error GoTo ErrH
v = 123.456 '小数点のある数値
Debug.Print "CByte(" & v & "): " & CByte(v)
v = "123.456" '文字列の小数付き数字
Debug.Print "CByte(""" & v & """): " & CByte(v)
v = "255.567" '文字列の小数付き数字(四捨五入)
Debug.Print "CByte(""" & v & """): " & CByte(v)
v = "-123" '文字列のマイナス数字
Debug.Print "CByte(""" & v & """): " & CByte(v)
v = "ABC" '数字ではない文字列
Debug.Print "CByte(""" & v & """): " & CByte(v)
Exit Sub
'エラーハンドラー
ErrH:
Debug.Print "CByte(""" & v & """): " & _
"エラー" & Err.Number & Err.Description
Resume Next
End Sub
このコードを実行したイミディエイト画像がこちらです。
1番目(7~8行目)、引数は、数値「123.456」です。小数以下が四捨五入され「123」の整数が返りました。
2番目(10~11行目)、文字列の小数値「”123.456″」が引数の戻り値は「123」でした。数値と認識されて正しく変換されました。
3番目(13~14行目)、引数が「”255.567″」の場合、数値と認識されましたが、小数以下が四捨五入されて値が「256」となったことで オーバーフローエラー が発生しました。
4番目(16~17行目)、引数が負数「”-123″」の場合、こちらも値が 0~255 の範囲外のため オーバーフローエラー が発生しました。
5番目(19~20行目)、文字列「”ABC”」を引数とした場合 数値と認識されないので エラー番号13「型が一致しません」が発生しました。
文字列のRGB値をCByte関数で変換するサンプル
RGB 値が文字列型で与えられた場合、R,G,B それそれの値を取得して Byte 型に変換するサンプルコードを紹介します。RGB 値は 0 から 255 の範囲の Byte 型です。
'■文字列のRGB値をCByte関数で変換するサンプル
Sub GetRGBFromString()
Dim sRGB As String
Dim red As Byte
Dim green As Byte
Dim blue As Byte
'RBG値を文字列で指定する例:"255,0,128"
sRGB = "255,0,128"
'カンマで分割して数値に変換 array
Dim rgbValues() As String
rgbValues = Split(sRGB, ",")
If UBound(rgbValues) = 2 Then
On Error Resume Next
red = CByte(rgbValues(0))
green = CByte(rgbValues(1))
blue = CByte(rgbValues(2))
On Error GoTo 0
'エラーがあった場合は処理を分岐
If Err.Number = 0 Then
'バイト型の値を表示
Debug.Print "Red (Byte): " & red
Debug.Print "Green (Byte): " & green
Debug.Print "Blue (Byte): " & blue
Else
Debug.Print "無効な RGB 値です。"
End If
Else
Debug.Print "無効な RGB 文字列形式です。"
End If
End Sub
このコードでは、9行目の文字列 “255,0,128” を13行目の Split 関数を使ってカンマで分割して R,G,B 値を取得し、CByte 関数で Byte 型に変換しています。
範囲(0~255)外の不正な値が指定されていた場合、CByte 関数で変換する際にエラーが発生してしまうのでエラーチェックしてから表示するようにしています。
おわりに
VBAの関数一覧はこちらからご参照ください。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
Excel VBA CByte 関数は、引数を Byte型(0~255 の整数) に変換するデータ型変換関数ひとつです。
引数が小数を含む場合は、小数部は四捨五入されます。
引数の数値が 0~255 の範囲外の場合はオーバーフローエラーとなります。
また、数値と認識できない文字列の場合には、実行時エラー13(型が一致しません。)が発生します。
CByte 関数を使用する場合は、これらのエラーに対応する処理について考慮する必要があります。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;