- 締切済み
"DO LOOP"
テキストボックスに数値を入れると Do Loopでその数値の整数部分が何桁かを計算して、 ラベルに表示させるプログラムを作りたいです。 その時の、終了条件がわかりません。 (出来れば繰り返し実行されるステートメントお願いします。) 教えてください。お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Hk2001
- ベストアンサー率48% (24/49)
終了条件は 入力値をすべてチェックしたとき、もしくは途中で数値以外の入力値があった場合だとおもいます。 整数部分の桁数ということなので Fix もしくは Int 関数を使用 符号の桁数カウント防止のため Abs関数(絶対値)を使用 しました。 Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) Dim lCnt As Long 'カウント Dim lMaxCnt As Long '最大カウント Dim lDspCnt As Long '表示用カウント 'ENTERキー If KeyCode = vbKeyReturn Then '最大文字数取得 lMaxCnt = Len(Trim$(Text1.Text)) lCnt = lMaxCnt Label1.Caption = "" 'レベルクリア lDspCnt = 0 '表示用カウントクリア Do Until lCnt = 0 '数値チェック If IsNumeric(Mid$(Trim$(Text1.Text), lCnt)) = True Then lDspCnt = Format$(Fix(Mid$(Trim$(Text1.Text), lCnt)), "#0") '少数点を切り捨て lDspCnt = Abs(lDspCnt) '絶対値を求める lDspCnt = Len(CStr(lDspCnt)) '整数部分の文字数 Else '数値以外 Exit Do End If lCnt = lCnt - 1 Loop Label1.Caption = lDspCnt & "桁" End If End Sub
- TAGOSAKU7
- ベストアンサー率65% (276/422)
どもども 田吾作7です。 なぜDoLoopがいいのかな?DoLoopよりもっと便利な方法がありますよ。 一応3パターンありますので、好きなのを使ってください。 'DO_LOOPにより整数部分を求める Function func_DoLoop(inSrNumber As String) As Long Dim wkCount As Long Dim wkLength As Long '全体の長さを求める wkLength = Len(inSrNumber) 'とりあえず一文字目を指定 wkCount = 1 '最後の桁までいったら終了 Do Until wkCount > wkLength 'もしピリオドだったら抜ける If Mid$(inSrNumber, wkCount, 1) = "." Then func_DoLoop = wkCount - 1 Exit Do End If wkCount = wkCount + 1 Loop End Function 'InStrにより整数部分を求める Function func_InStr(inSrNumber As String) As Long Dim wkString As String wkString = Left(inSrNumber, InStr(inSrNumber, ".") - 1) func_InStr = Len(wkString) End Function 'Valにより整数部分を求める Function func_Val(inSrNumber As String) As Long Dim wkString As String wkString = Val(CLng(inSrNumber)) func_Val = Len(wkString) End Function でわでわ