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

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

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

「excelvbaで小数点以下の桁数を取得する」
といった検索キーワードをきっかけにして、アクティブセルの小数点以下桁数を取得するExcel VBAのコードをご紹介しました。

[スポンサードリンク]

複数セルの小数点以下の最大桁数を取得したい、という要望も結構あるように私は感じています。

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

以下のExcelマクロを実行すると、A1:A5セルの小数点以下の最大桁数を取得できます。

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

 Dim rng As Range, rng_str As String
 Dim decs As Long, decs_max As Long
 
 For Each rng In Range("A1:A5") 
  rng_str = CStr(rng.Value) 

  If InStr(rng_str, ".") >= 1 Then  
   decs = Len(rng_str) - InStr(rng_str, ".")
   If decs > decs_max Then decs_max = decs 
  End If
  
 Next

MsgBox "小数点以下の最大桁数は「" & decs_max & "」です!"

End Sub

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

上記のサンプルマクロで行っている処理は以下のとおりです。

対象のセル範囲に対してFor Each~Nextループを回して、Range.Valueプロパティで取得した値を文字列変換して変数rng_strに代入しておきます。

 For Each rng In Range("A1:A5") 
  rng_str = CStr(rng.Value) 

VBAのInStr関数を使って小数点「.」があるかを調べ、存在していたときには小数点以下の桁数を変数decsに代入します。

  If InStr(rng_str, ".") >= 1 Then  
   decs = Len(rng_str) - InStr(rng_str, ".")

変数decsとdecs_maxを比較してdecsのほうが大きければ、変数decs_maxの値を変数decsの値に変更です。

   If decs > decs_max Then decs_max = decs 

[スポンサードリンク]

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

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

検索


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

.