Home » Excel VBA Rangeオブジェクト » VBAで小数点以下の桁数を取得する

VBAで小数点以下の桁数を取得する

動作検証バージョン:Windows 11 Home + 64bit Excel バージョン 2505(ビルド18827.20128クイック実行)

「excelvbaで小数点以下の桁数を取得する」
といった検索が、このサイト『インストラクターのネタ帳』で行われていました。

セルに入力されている数値の、小数点以下の桁数をExcel VBAで取得するにはどのようなコードを書けばいいのかを調べていらしたのでしょう。

[スポンサードリンク]

小数点以下の桁数を取得するサンプルマクロ

以下のExcelマクロを実行すると、アクティブセルの小数点以下の桁数がメッセージボックスに表示されます。

Sub 小数点以下の桁数を取得する()

 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 & "」です!"

End Sub

サンプルマクロで行っている処理

最初に、アクティブセルの値を文字列に変換して変数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)

するのが一案です。

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » VBAで小数点以下の桁数を取得する

「Excel VBA Rangeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.