vba data types numeric
このチュートリアルでは、VBAで使用できるさまざまな数値および非数値データ型について説明します。また、データ型の変換についても学習します :
私たちは毎日、名前、日付、請求書、商品の価格など、さまざまな種類のデータに出くわします。これらのデータはすべて特定の種類に属し、その値はそれに添付されている種類と同じです。同様に、VBAには、必要なアクションを実行するために使用される多くの種類のデータがあります。
このチュートリアルでは、VBAで使用されるさまざまな種類のデータを学習し、それらがプログラムの編成にどのように役立つかを確認します。また、あるデータ型を別のデータ型に変換する方法についても検討します。
=> ここですべてのVBAチュートリアルを確認してください
学習内容:
データ型のカテゴリ
データ型は、変数を使用して保存する必要のあるデータの種類をコンピューターに通知します。データ型は、数値データ型と非数値データ型の2つのカテゴリに分類されます。
数値データ型
これらのタイプは、加算、減算などの数学演算を実行するために使用されます。 例、 パーセンテージ計算、株価、手数料、請求書、年齢など。
VBAには、以下の7種類の数値データ型があります。
数値データ型 | |
---|---|
7 | 10進数 |
1 | バイト |
二 | 整数 |
3 | 長いです |
4 | シングル |
5 | ダブル |
6 | 通貨 |
すべての数値データ型を簡単に見てみましょう。
#1)バイトデータ型
このデータ型には、1バイトのメモリしか必要ありません。データ型がByteの変数は、0〜255の値を格納できます。デフォルトのバイト値は0です。負の値および255を超える値は許可されていません。無効な値を割り当てようとすると、オーバーフローエラーが返されます。
構文:Dim Vname As Byte
ここで、Vnameは変数名であり、Byteは変数のデータ型です。
例:
Sub ByteDTtest() Dim vname1 As Byte vname1 = 10 MsgBox 'Value of vname1 is : “ &vname1 End Sub
出力を以下に示します
#2)整数データ型
これらのデータ型は、整数値全体を格納するために使用されます。これは2バイトのメモリを占有します。整数は、頻繁に使用されるデータ型の1つです。正の値、負の値、およびゼロの両方を受け入れます。それらの範囲は-32,768〜32,767です。
構文:Dim ignites As Integer
例:
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
出力を以下に示します
#3)長いデータ型
これは、整数値も格納する整数データ型の代替手段です。ただし、4バイトの整数変数よりも多くのメモリを占有します。値の範囲は-2,147,483,648から2,147,483,648です。
構文:Dim vname As Long
Sub IntDTtest() Dim vname1, vname2 As Integer vname1 = 10 vname2 = -20 MsgBox 'Value of Integer variable is ' & vname1 & ' and ' & vname2 End Sub
整数変数を使用して上記のコードを実行すると、Excelには1048576行があり、整数データ型は32,767までしかサポートしないため、オーバーフローエラーが発生します。以下に示すように、データ型が長い場合、適切な結果が表示されます。
ただし、データ型が整数の場合、オーバーフローエラーがスローされます。
#4)10進データ型
これは、精度のために使用される正確な数値データ型です。これは、スケーリング係数と呼ばれる合計桁数と小数点の右側の桁数です。
VBAでは、数値は10の累乗でスケーリングされます。正確な値を必要とする大きな数値を操作するときは、これらのタイプを使用するのが適切です。これはメモリ内で14バイトを占有します。
ただし、変数を10進データ型として直接宣言することはできません。 Decimalを使用するには、CDec変換機能を使用する必要があります。 Variantデータ型を使用する必要があります。
このデータ型には、以下の範囲の値が含まれています。
+/- 79,228,162,514,264,337,593,543,950,335、小数点なし
+/- 7.9228162514264337593543950335。小数点以下28桁。
受け入れられるゼロ以外の最小値は+/- 0.0000000000000000000000000001です。
構文:Dim ignites Asvariant
Sub DecimalDataTypeTest() Dim DecValue As Variant DecValue = CDec(1000.4560323034) MsgBox 'Data type of Decvalue variable is : ' & TypeName(DecValue) & ' value ' & DecValue End Sub
注意: TypeName関数はデータ型名を与えます
出力:
#5)単一のデータ型
このデータ型は、単精度浮動小数点で数値を格納するために使用されます。 4バイトのメモリを占有します。デフォルト値は0で、10進値を格納します。以下の構文に示すように、変数を宣言するときに感嘆符(!)を使用できます。
許容される値の範囲は次のとおりです。
負の値の場合は3.402823E38〜-1.401298E-45
正の値の場合は1.401298E-45から3.402823E38。
構文
単一としての薄暗いVariableName
または
薄暗いVariableName!
Sub SingleDataTypeTest() Dim SingleVal1 As Single Dim SingleVal2! SingleVal1 = 123 SingleVal2 = 333.44 MsgBox ('Data type of SingleVal1 is ' & TypeName(SingleVal1) & ' with value ' & SingleVal1 & ' and datatype of SingleVal2 is ' & TypeName(SingleVal2) & ' with value ' & SingleVal2) End Sub
#6)ダブルデータ型
Double VBAデータは、整数と分数の両方を保持するために使用できます。 Doubleは、倍精度浮動小数点で数値を格納するために使用されます。 8バイトのメモリを占有し、値の範囲があります。
-1.79769313486231E308から-4.94065645841247E-324(負の値の場合)
正の値の場合は4.94065645841247E-324から1.77969313486232E308
Singleデータ型と同様に、doubleは、以下に示すように、ハッシュ(#)であるシンボルを使用して宣言することもできます。
構文
Dim VariableName as Double
または
Dim VariableName#
Sub DoubleDataTypeTest() Dim douValue As Double Dim douVal1# douValue = 100.21 douVal1 = 333.44 MsgBox ('Data type of douValue is ' & TypeName(douValue) & ' with value ' & douValue & ' and datatype of douVal1 is ' & TypeName(douVal1) & ' with value ' & douVal1) End Sub
#7)通貨データ型
このデータ型は、最大8バイトのストレージサイズを使用できます。このタイプのデータは、すでに説明したシングルおよびダブルのデータタイプが丸められているのとは異なり、正確な値を提供します。これらは金銭計算に役立ちます。
通貨データ型には、正の値と負の値の両方を格納できます。これらは、小数点の左側に15桁、右側に4桁を格納できます。
許容範囲は-922,337,203,685,477.5808から922,337,203,685,477.5807です。 @を使用して、通貨データ型を宣言できます。
構文
通貨としてのDimVariableName
または
Dim VariableName @
Sub CurrencyDataTypeTest() Dim val1 As Currency Dim Val2@ val1 = 123 Val2 = 333.44 MsgBox ('Data type of Val1 is ' & TypeName(val1) &” with value “ &val1 & ' and datatype of Val2 is ' & TypeName(Val2) & “ with value “ &val2) End Sub
出力:
注意 :変数の値が特定のデータ型に指定された範囲を超えると、オーバーフローエラーがスローされます。
範囲を超えるバイトデータ型の簡単な例を考えてみましょう。バイトデータ型に負の値を入力した場合も同じエラーが表示されます。
非数値データ型
これらは、算術演算子で操作できないデータです。これらは、テキスト、文字列、日付などで構成されます。以下に、VBAでサポートされている非数値データ型を示します。
非数値データ型 | |
---|---|
7 | 異体字(文字) |
1 | 文字列(固定長) |
二 | 文字列(可変長) |
3 | 日付 |
4 | ブール値 |
5 | オブジェクト |
6 | バリアント(数値) |
#1)ブールデータ型
このデータ型は2バイトのメモリを必要とし、TRUEまたはFALSEの2つの値のみを格納できます。つまり、ブール変数は、TRUEまたはFALSEのいずれか、あるいはそれぞれ1または0の値しか取得できません。ブール変数のデフォルト値はFalseです。
構文-DimVname As Boolean
例:
Sub BooleanDataTypeTest() Dim bval1 As Boolean MsgBox ('datatype of variable bval1 is :' & TypeName(bval1) & ' default value of boolean varible is ' & bval1) End Sub
#2)日付データ型
このデータ型は、日付と時刻を表すために使用されます。日付範囲の値は0100年1月1日から9999年12月31日まで、時間の値は0:00:00から23:59:59までで、8バイトのストレージサイズを占有します。
構文: 薄暗いが日付として発火する
Sub DateDataTypeTest() Dim datetime As Date datetime = Now MsgBox 'Current date and time is ' & datetime End Sub
注意: Now関数は、現在の日付と時刻を提供します
#3)文字列データ型
このデータ型は、文字列値を格納するために使用されます。文字列は文字のシーケンスとして定義されます。したがって、文字列データ型を使用してテキストを格納したり、数値、特殊文字、s、およびイベントスペースを格納したりすることができます。文字列値は、二重引用符「」で囲む必要があります。
文字列データ型には2つのタイプがあります。
#1)可変長文字列: このタイプは、10バイトのストレージサイズに加えて、文字列の長さである文字列に必要なメモリを占有します。それらの範囲値は0から約20億です。
#2)固定長文字列: 文字列自体の長さに等しいメモリを占有します。 1〜約65,400文字の範囲で指定できます
構文: 文字列としての薄暗いVname
例:
datファイルを開くにはどうすればよいですか
Sub StringDataTypeTest() Dim sVal1 As String sVal1 = 'Text1234#$@ and Spaces:)' MsgBox 'I can accept anything ' & sVal1 End Sub
#4)オブジェクトのデータ型
オブジェクトは、任意のタイプのオブジェクトへの参照を持ちます。つまり、オブジェクトデータ型は、文字列、double、整数などの任意のデータ型を指すことができます。オブジェクト変数には値は含まれず、データが存在するアドレスのみを指します。保存されます。それは4バイトのコンピュータメモリを占有します。オブジェクトのデフォルト値はnull参照です。
構文: オブジェクトとしての薄暗いVName
例:
Sub ObjectDataTypeTest() Dim wsActiveSheet As Object Set wsActiveSheet = ActiveSheet wsActiveSheet.UsedRange.Clear End Sub
これにより、現在のシートで使用されているすべてのセルがクリアされます。
#5)バリアントデータ型
これはVBAのユニバーサルデータ型であり、数値および非数値のあらゆる種類のデータを受け入れることができます。バリアントデータ型を使用すると、データを操作する際の柔軟性が高まります。バリアントデータ型は、他のどのデータ型よりも多くのストレージサイズを使用します。データ型について言及しない場合、VBAはそれをバリアント変数として扱います。
バリアントデータ型には2つのタイプがあります
#1)バリアント(番号): これには、Doubleの範囲までの任意の数値を含めることができます。バリアント番号は、16バイトのストレージサイズを占有します。
#2)異体字(文字): これには、可変長文字列の場合と同じ範囲を含めることができます。異体字は22バイト+文字列の長さを占めます(64ビットシステムでは24バイト)
構文
バリアントとしての薄暗いVName
または
薄暗いVName
例:
Sub VariantDataTypeTest() Dim EmpName As Variant Dim DOB Dim Salary As Variant EmpName = 'Jofn kim' DOB = #10/3/2020# Salary = 55000 MsgBox EmpName & ' ' & DOB & ' ' & Salary End Sub
データ型変換
変数のデータ型をユースケースで特定のものに変換する必要がある場合があります。
例: セル(通常は文字列)から値を取得するため、算術演算を実行する前に、その値を数値データ型に変換する必要があります。これを実現するために、VBAには、サポートされているすべてのデータ型の型変換関数があります。
#1)CBool
この関数は、式をブールデータ型に変換するために使用されます。式がゼロを返す場合、CBoolはFalseを返し、ゼロ以外の値を返すと、CBoolはTrueを返します。
Sub CBooleanTest() Dim val1 As Integer Dim strval2 As String val1 = 0 MsgBox CBool(val1) val1 = 177 MsgBox CBool(val1) strval2 = 'A' MsgBox CBool(strval2 = 'B') MsgBox CBool(strval2 'B') End Sub
上記のコードは、False、True、False、Trueとして結果を返します。
試してみて、ActiveXコントロールコマンドボタンを描画し、右クリック->コードを表示して上記のコードを挿入します。コマンドボタンをクリックすると、結果が表示されます。 (デザインモードを無効にする)
出力
#2)CByte
この関数は、式をバイトデータ型に変換するために使用されます。変換後、範囲がByteで許可されている範囲を超えると、オーバーフローエラーがスローされることに注意してください。
Sub cbyteTest() Dim val1 As Double Dim val2 val1 = 125.5678 val2 = CByte(val1) MsgBox ('DataType is ' & TypeName(val2) & ' and value of val2 is ' & val2) End Sub
注意: 値を255.56として指定した場合。 Complierはオーバーフローエラーを返します
#3)CCur
この関数は、式を通貨データ型に変換します。
Sub ccurTest() Dim val1 As Integer Dim val2 val1 = 5544 val2 = CCur(val1 / 5) MsgBox ('DataType is ' & TypeName(val2) & ' and value of val2 is ' & val2) End Sub
#4)CDate
この関数は、文字列を日付に変換します。日付値をExcelセルから文字列として取得し、それを変換してからさらにアクションを実行するとします。 CDateを使用できます。
Sub CDateTest() Dim val1, val2, val3 As String Dim Res1, Res2, Res3 val1 = '12:21' val2 = '23/09 12:12' val3 = 'Sep 23, 2020' Res1 = CDate(val1) Res2 = CDate(val2) Res3 = CDate(val3) MsgBox 'Date of val1 is : ' & Res1 & ' Date of val2 is : ' & Res2 & ' Date of val3 is ' & Res3 End Sub
#5)CDbl
CDbl関数は、式をDoubleデータ型に変換するために使用されます。
Sub CDblTest() Dim val1 As String Dim val2 As Integer Dim Res1 val1 = 10000.12345 val2 = 1222.222 Res1 = CDbl(val1) Res2 = CDbl(val2) MsgBox 'Double value after converting String : ' & Res1 & ' Double value after converting Integer : ' & Res2 End Sub
#6)CDec
この関数は、数値を10進数に変換します。
Sub CDecTest() Dim Val1 As Currency Dim Result Val1 = 1234566.56366 Result = CDec(Val1) ‘Result is 1234566.5637 MsgBox 'Decimal Data Type Value : ' & Result End Sub
#7)CInt
CInt関数は、値を整数データ型に変換します。
Sub CintTest() Dim Val1 As Double Dim Result Val1 = 2345.5678 Result = CInt(Val1) 'Result is 2346 MsgBox 'Integer value of converting is : ' & Result & ' and datatype of Result is ' & TypeName(Result) End Sub
#8)CLng
この関数は、値をLongデータ型に変換するために使用されます
Sub cLngTest() Dim Val1, Val2 As Double Dim Res1, Res2 Val1 = 45457.35 Val2 = 45457.65 Res1 = CLng(Val1) Res2 = CLng(Val2) MsgBox 'Result after converting Res1 is ' & Res1 & ' and Res2 value is ' & Res2 End Sub
#9)CSng
この関数は、値を単一のデータ型に変換します
Sub cSngTest() Dim Val1, Val2 As Double Dim Res1, Res2 Val1 = 75.3421115 Val2 = 75.3421555 Res1 = CSng(Val1) ' Result is 75.34211. Res2 = CSng(Val2) ' Result is 75.34216. MsgBox 'Result after converting Res1 is ' & Res1 & ' and Res2 value is ' & Res2 End Sub
#10)CStr
この関数は、数値を文字列データ型に変換するために使用されます。
Sub CStrTest() Dim Val1 As Double Dim Result Val1 = 123.123 Result = CStr(Val1) 'Result will be 123.123 MsgBox 'Result of Val1 is ' & Val1 End Sub
#11)CVar
この関数は、式をVariantデータ型に変換します。
Sub CVarTest() Dim Val1 As Integer Dim Result Val1 = 1234 Result = CVar(Val1 & 1.12) ' Result will be 12341.12 MsgBox 'Result is ' & Result End Sub
よくある質問
Q#1)VBAのデフォルトのデータ型は何ですか?
回答: バリアントがデフォルトです。変数のデータ型を定義しない場合、VBAはそれをバリアント変数/オブジェクトとして扱います。
Q#2)タイプミスマッチエラーとは何ですか?
回答: このエラーは、変数を1つのデータ型として宣言し、不適切な値を割り当てるとトリガーされます。
例: 変数を整数として宣言し、テキスト値を入力します。
Q#3)オーバーフローエラーを修正するにはどうすればよいですか?
回答: 特定のデータ型が許可されている範囲を参照し、許可されている範囲内の値を入力していることを確認する必要があります。
例: バイトは0から255のみを許可し、255を超える負の値またはv値を入力すると、オーバーフローエラーが発生します。
結論
このチュートリアルでは、VBAデータ型(7つの数値データ型と7つの非数値データ型)について学習しました。また、例を使用して、データ型をある型から別の型に変換する方法についても説明しました。
=> VBAトレーニングチュートリアルのA〜Zを確認するには、ここをクリックしてください
推奨読書
- ExcelVBAチュートリアル-ExcelでのVBAの概要
- C ++データ型
- Pythonデータ型
- 例を含むC#データ型と変数
- C#型キャスト:例を使用した明示的および暗黙的なデータ変換
- 配列データ型-int配列、Double配列、文字列の配列など。
- MySQLデータ型| MySQLのさまざまなデータ型は何ですか