「excelvbaで小数点以下の桁数を取得する」
といった検索が、このサイト『インストラクターのネタ帳』で行われていました。
セルに入力されている数値の、小数点以下の桁数をExcel VBAで取得するにはどのようなコードを書けばいいのかを調べていらしたのでしょう。
小数点以下の桁数を取得するサンプルマクロ
以下のExcelマクロを実行すると、アクティブセルの小数点以下の桁数がメッセージボックスに表示されます。
Dim decimals As Long
Dim rng_str As String
rng_str = CStr(ActiveCell.Value)
If InStr(rng_str, ".") = 0 Then
decimals = 0
Else
decimals = Len(rng_str) - InStr(rng_str, ".")
End If
MsgBox "アクティブセルの小数点以下桁数は「" & decimals & "」です!"
サンプルマクロで行っている処理
最初に、アクティブセルの値を文字列に変換して変数rng_strに代入しています。
Dim rng_str As String rng_str = CStr(ActiveCell.Value)
VBAのInStr関数で、変数rng_strから小数点「.」の位置を探して0だった場合、すなわち「.」が存在しない場合には変数decimalsに「0」を代入し、
If InStr(rng_str, ".") = 0 Then decimals = 0
そうでない場合には、rng_strの長さから、InStr関数で取得した「.」の先頭からの位置を引き算して、decimalsに代入しています。
Else decimals = Len(rng_str) - InStr(rng_str, ".")
表示されている桁数を取得する場合
下図のように「0.123」が入力され、表示形式の設定により「0.12300」となっているときに、
「5」桁を取得したいのであれば、先ほどのマクロの、
rng_str = CStr(ActiveCell.Value)
の部分を、
rng_str = CStr(ActiveCell.Text)
するのが一案です。
- Older:7,000記事
Home » Excel VBA Rangeオブジェクト » VBAで小数点以下の桁数を取得する