OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

"DO LOOP"

  • すぐに回答を!
  • 質問No.102019
  • 閲覧数115
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 0% (0/2)

テキストボックスに数値を入れると
Do Loopでその数値の整数部分が何桁かを計算して、
ラベルに表示させるプログラムを作りたいです。

その時の、終了条件がわかりません。
(出来れば繰り返し実行されるステートメントお願いします。)

教えてください。お願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル12

ベストアンサー率 65% (276/422)

どもども 田吾作7です。 なぜDoLoopがいいのかな?DoLoopよりもっと便利な方法がありますよ。 一応3パターンありますので、好きなのを使ってください。 'DO_LOOPにより整数部分を求める Function func_DoLoop(inSrNumber As String) As Long Dim wkCount As Long Dim wk ...続きを読む
どもども 田吾作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

でわでわ


  • 回答No.2
レベル9

ベストアンサー率 48% (24/49)

終了条件は 入力値をすべてチェックしたとき、もしくは途中で数値以外の入力値があった場合だとおもいます。 整数部分の桁数ということなので Fix もしくは Int 関数を使用 符号の桁数カウント防止のため Abs関数(絶対値)を使用 しました。 Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) ...続きを読む
終了条件は 入力値をすべてチェックしたとき、もしくは途中で数値以外の入力値があった場合だとおもいます。

整数部分の桁数ということなので 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
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ