• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:InputBoxで代入した変数を比較演算子で処理)

比較演算子で処理した結果、予想外の結果になる原因について教えてください

このQ&Aのポイント
  • 比較演算子を使用して変数を判定する際に、予想外の結果が出る原因は変数の型が一致しないことが考えられます。
  • 特に、数値系のデータを文字列型として比較したり、文字列型のデータを数値として比較したりすると、結果が正しくない場合があります。
  • また、変数同士の比較でも、比較演算子を使用する際にはデータの型を一致させる必要があります。異なる型のデータを比較すると、予想外の結果になることがあります。

質問者が選んだベストアンサー

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

InputBoxでtypeの引数を省略すると、文字列になってしまいます。 開始行 = Application.InputBox("開始行を" & vbCrLf & _ "数字で入力してください") で取得したものは、数値ではなく、文字列なので、その様な不具合になるのだと思われます。 比較する際は、数値同士で比較できるように修正すべきです。 If Val(開始行) > 最終行 Then

gx9wx
質問者

お礼

変数への取込みかた、変数内での値 等でweb検索していたので Valにはたどりつきませんでした。 正常動作する時としない時があるので 余計に悩みました。 ElseIf Val(開始行2) > 最終行 Then と ElseIf Val(終了行2) <= Val(開始行2) Then で解決しました。 なお同じ理屈で最後の方も 最終行をそのまま使用する場合は 数値ですのでいいと思われますが、 変数「最終行」に変数「終了行2」を代入するさいに 文字列で代入されると思われるので? 最終行 = Val(終了行2) '最終行の値を終了行2に変更 にしました。 どうもありがとうございました。

関連するQ&A