EXCEL VBA の For・・・Next 小数のときに動きがおかしい。
<例>
Sub テスト()
Dim i As Single
Dim j As Long
For i = 0.025 To 0.03 Step 0.0025
j = j + 1
Cells(1, j) = i
Next i
End Sub
上記コードを実行すると、セル(1,1)~(1,3) にそれぞれ 0.025、0.0275、0.03 が入るはずです。
しかし、0.03が入らないまま処理が終了します。
デバックすると、
Next i
で、iに0.03が設定されたら、
j = j + 1
に戻らず、そのまま終わっています。
シートに表示された0.025、0.0275を数式バーで見るとそれぞれ
0.025000000372529、0.0274999998509884
となっています。
同様にNext i で0.03が設定されたように見えて、実際は0.03よりも少しだけ大きな数値が入ったのでしょうか?(debug.printを使いイミディエイトウインドウに表示させても0.03でしたが)
期待どおりi=0.03でも処理を実行させるにはどうしたらいいのでしょうか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
そりゃそうです。
Excelは2進演算しますから。その手のループには整数を使うのが「プログラマの常識」です。ですので基本的には
Sub テスト()
Dim i As Single
Dim j As Long
For i = 250 To 200 Step 25
j = j + 1
Cells(1, j) = i / 10000
Next i
End Sub
こんな感じではないかと。
いずれにせよ「パラメータに小数を使う」のは避けないと、思わぬところでおかしなな動きをしますよ。
ありがとうございます。
初期値、最終値、加算値は「%」で入力する処理を作りたかったので、小数を使っていました。
教えていただいたコードをヒントに、パラメータも*10000して上手く処理できました。
助かりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
EXCEL VBA マクロ 実行する度に...
-
FFTの結果ついて
-
月度は何て読みますか?
-
【Excel】特定の文字を含むセル...
-
VBAでループ内で使う変数名を可...
-
VBの質問#if 0 then ってどう...
-
VBA 特定の文字が入力されたセ...
-
vba 空のデータをSplitする時の...
-
インタラクティブの反対語は?
-
DoEventsがやはり分からない
-
RPGプログラムの*HIVALについて
-
EXCEL2003 VBAで2つのDBに接続...
-
お家デートをしててハグを長い...
-
リョウ・・・量?料?
-
パソコンについて GPUをCPUの代...
-
1〜100の中で if(2の倍数) else...
-
取り消し線が入った文字を削除...
-
EXCEL VBA の For・・・Next ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
DoEventsがやはり分からない
-
UMLでの例外処理
-
EXCEL VBA マクロ 実行する度に...
-
月度は何て読みますか?
-
FFTの結果ついて
-
VBの質問#if 0 then ってどう...
-
お家デートをしててハグを長い...
-
switch の範囲指定
-
Loadイベント中にほかのイベン...
-
インタラクティブの反対語は?
-
VB.NET Excelを読み込んでDataT...
-
Do~Loopした回数をカウントしたい
-
セックスレスの既婚女性は自慰...
-
メルカリのメルカードで買い物...
-
RPGプログラムの*HIVALについて
-
iD
おすすめ情報