本ページには広告が含まれています。

ExcelVBA CByte関数 引数をByte型に変換します

ExcelVBA CByte関数 引数をByte型に変換します

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

このコードを実行したイミディエイト画像がこちらです。

CByte_Sample コード実行結果のイミディエイト画像

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 関数で変換する際にエラーが発生してしまうのでエラーチェックしてから表示するようにしています。

おわりに

Excel VBA CByte 関数は、引数を Byte型(0~255 の整数) に変換するデータ型変換関数ひとつです。

引数が小数を含む場合は、小数部は四捨五入されます。

引数の数値が 0~255 の範囲外の場合はオーバーフローエラーとなります。

また、数値と認識できない文字列の場合には、実行時エラー13(型が一致しません。)が発生します。

CByte 関数を使用する場合は、これらのエラーに対応する処理について考慮する必要があります。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

スポンサーリンク
スポンサーリンク

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!