
VBAのif文で下記コードを書いています(コード一部)
If Me.TextBox6 >= Me.TextBox4 And Me.TextBox6 <= Me.TextBox4 Then
ユーザーフォームのTextBox6に入力されている数値を
TextBox4(最小値)、TextBox5(最大値)の数値と比較して
範囲なら処理に進むコードなのですが
TextBox4、TextBox5に入力されている桁がどちらも同じ桁なら
問題なく動作するのですが、TextBox4が2桁、TextBox5が3桁
だと正しく動作しません。
原因や、修正コードを教えてください。
No.4
- 回答日時:
こんにちは
問題は解決されたようですね
ユーザーフォームだと思いますので違った視点で対策すると
TextBox4、TextBox5への入力が手入力ならば
目的を鑑みて入力制御を設定する方法もありかな?
TextBox4、TextBox5への入力はIMEModeを半角英数字のみに設定
TextBox4、TextBox5へのKeyPressイベントで数値と.のみ入力可能
Private Sub test()
Dim tbx As Double
If IsNumeric(Me.TextBox6) Then
tbx = CDbl(Me.TextBox6)
If tbx >= Me.TextBox4 And tbx <= Me.TextBox5 Then
MsgBox "範囲内の数値です"
Else
MsgBox "範囲外の数値です"
End If
Else
MsgBox "TextBox6には数値を入力してください"
End If
End Sub
Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If TextBox4 <> "" Then
If Not Chr(KeyAscii) Like "[0-9.]" Then
KeyAscii = 0
End If
Else
If Not Chr(KeyAscii) Like "[0-9]" Then
KeyAscii = 0
End If
End If
End Sub
Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If TextBox5 <> "" Then
If Not Chr(KeyAscii) Like "[0-9.]" Then
KeyAscii = 0
End If
Else
If Not Chr(KeyAscii) Like "[0-9]" Then
KeyAscii = 0
End If
End If
End Sub
Private Sub UserForm_Initialize()
TextBox4.IMEMode = fmIMEModeDisable
TextBox5.IMEMode = fmIMEModeDisable
TextBox6.IMEMode = fmIMEModeDisable
End Sub
VBAでTextBox4、TextBox5へ出力している場合は数値として出力
変数型については暫定
コードをまとめていませんが 参考程度で
No.3
- 回答日時:
まぁもう解決しているようですけど・・・・
『TextBox6に入力されている数値』
と貴方は解釈していても、システム的にはその段階では数字の文字列です
値に変換してから比較しないと、文字コードの大小で比較するので意図しない結果になります
数値と数字文字列の違いは大事な概念ですからこれを機会に理解してください
No.2
- 回答日時:
問題のコードを見ると、条件文の比較演算子が不正確なため、正しく動作しない可能性があります。
具体的には、`Me.TextBox6 >= Me.TextBox4 And Me.TextBox6 <= Me.TextBox4` の箇所が問題です。TextBox4とTextBox5の比較演算子が同じになってしまっています。修正するためには、TextBox4とTextBox5の比較演算子をそれぞれ別々に指定する必要があります。以下に修正例を示します。
If Me.TextBox6 >= Me.TextBox4 And Me.TextBox6 <= Me.TextBox5 Then
' 処理に進むコードをここに記述する
End If
修正後のコードでは、TextBox4とTextBox5の比較演算子を個別に指定しています。TextBox4が最小値を表し、TextBox5が最大値を表すようになっています。
修正後のコードを使用することで、TextBox4が2桁でTextBox5が3桁の場合でも正しく動作するはずです。もし他に問題がある場合は、詳細な情報が必要になるため、追加の修正やデバッグが必要になるかもしれません。
ご回答いただきありがとうございます。
Me.TextBox6 >= Me.TextBox4 And Me.TextBox6 <= Me.TextBox4
の部分に関してはこちらの記載間違いでした。すみません。
正しい状態でも、if文の方は正しく動作しませんでしたが
№1さんに教えて頂いたコードで動作確認できました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
1日に1人がこなせるプログラム...
-
VBAでファイルオープン後にコー...
-
Excelシート上で右クリックがで...
-
1、Rstudioで回帰直線を求める...
-
Exel VBA 別ブックから該当デ...
-
エクセルに見えない文字(JISX0...
-
access2021 VBA メソッドまたは...
-
Nullの使い方が不正です。
-
エクセルVBA ユーザーフォーム...
-
オートフィルタで抽出結果に 罫...
-
VB2005 TextBoxの入力制...
-
コンパイルエラー 変数が定義...
-
JavaScriptの定数名が取り消し...
-
videopadについて
-
ActiveReportの改ページ不具合...
-
VLookup関数を使ってラベルに表...
-
MessageBoxで表示される文字列...
-
UWSCでMOUSEORG関数が上手く処...
-
Microsoft Visual Studio Commu...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
access2021 VBA メソッドまたは...
-
1日に1人がこなせるプログラム...
-
JANコードとPOSコードは同じ?
-
1、Rstudioで回帰直線を求める...
-
access2003 クエリSQL文に...
-
Exel VBA 別ブックから該当デ...
-
JavaScriptの定数名が取り消し...
-
COBOLの文法
-
VBAでファイルオープン後にコー...
-
変数名「cur」について
-
エクセルに見えない文字(JISX0...
-
オートフィルタで抽出結果に 罫...
-
Nullの使い方が不正です。
-
PreviewKeyDownイベントが2回...
-
【VB6】実行ファイルとした後、...
-
Javaの改行について
-
C# コードビハインドについて
-
Excelシート上で右クリックがで...
-
木偏に「久」
おすすめ情報