[リストへもどる]
一括表示

投稿時間:2003/08/10(Sun) 14:10
投稿者名:たけちゃん
Eメール:
URL :
タイトル:
桁数(小数点固定)の固定入力
はじめまして。
現在、身長、体重からBMI(体格指数)を求めるプログラムを作ってますが、そこで、聞きたい
ことがあって投稿しました。

今は、テキストボックスに身長などのデータを小数点も含め入力する設定にしてますが、それを
小数点を入力せず、返した値に小数点を認識するにはどうしたらいいのですか?

例 155.6(今)→1556

すみません。質問の仕方が不明だと思いますが。VB6です。

投稿時間:2003/08/10(Sun) 15:15
投稿者名:nobu
Eメール:
URL :
タイトル:
Re: 桁数(小数点固定)の固定入力
> 今は、テキストボックスに身長などのデータを小数点も含め入力する設定にしてますが、それを
> 小数点を入力せず、返した値に小数点を認識するにはどうしたらいいのですか?


Dim tmp As String
tmp = "1234"
Debug.Print Format(tmp, "@@@.@")   ' ==> 123.4

tmp = "567"
Debug.Print Format(tmp, "@@@.@")   ' ==>  56.7

投稿時間:2003/08/10(Sun) 16:30
投稿者名:たけちゃん
Eメール:
URL :
タイトル:
Re^2: 桁数(小数点固定)の固定入力
こんにちは。のぶさん。早速のレスありがとうございました。
下記のコーディングの意味がわからないんです。すみません。
まだ、初心者なので!!~(=^‥^A アセアセ・・・

> Dim tmp As String
> tmp = "1234"
> Debug.Print Format(tmp, "@@@.@")   ' ==> 123.4
>
> tmp = "567"
> Debug.Print Format(tmp, "@@@.@")   ' ==>  56.7

投稿時間:2003/08/10(Sun) 17:59
投稿者名:nobu
Eメール:
URL :
タイトル:
Re^3: 桁数(小数点固定)の固定入力
> 下記のコーディングの意味がわからないんです。すみません。

意味が分からない...とは? 
こちらも意味が分からないよ!
どこが、どの様に分かりませんか?

提示されたサンプルを試す事も出来ない程の初心者ですか?

HELPで Format をキーにして調べて下さい。
このHELPで調べるも分からない?

TextBox に1234と入力されたデータを
tmp と言う変数に受け取ったとして 123.4 にするには...
と言う1例です。

投稿時間:2003/08/10(Sun) 18:16
投稿者名:たけちゃん
Eメール:
URL :
タイトル:
Re^4: 桁数(小数点固定)の固定入力
こんばんは、のぶさん、早速ありがとうございました。また
お叱りの言葉ありがたくちょうだいします。

> どこが、どの様に分かりませんか?

 のぶさんのコーディングで、
 debug.print
  とあるのですが、その意味がわからないのです。

> HELPで Format をキーにして調べて下さい。
> このHELPで調べるも分からない?

 いや、ヘルプの見方は、わかります。あとから調べてみます。

早速、サンプルを試したのですが、テキストボックスとラベルをつくり、ラベルに
表示しようとしましたが、やはり、小数点をいれないとだめなのです。
下記にコーディングを書いておきます。

Private Sub Text1_Change()
Dim s As String

    s = Text1.Text
    Debug.Print Format(s, "@@@.@")
    Label1.Caption = s
    
End Sub

投稿時間:2003/08/10(Sun) 18:54
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: 桁数(小数点固定)の固定入力
>  debug.print
>   とあるのですが、その意味がわからないのです。

イミディエイトウィンドウの事です。
VBのプログラム作成画面の下部に表示されていなければ、メニューバーの
表示をクリックしてイミディエイトウィンドウ(I) をクリックすれば表示されます。
それからプログラムを実行して見て下さい。

又は MsgBox Format(tmp, "@@@.@") のようにして表示させて見て下さい。

投稿時間:2003/08/10(Sun) 20:39
投稿者名:たけちゃん
Eメール:
URL :
タイトル:
Re^6: 桁数(小数点固定)の固定入力
こんばんは、花ちゃん。いつもこのサイトを見させていただいております。
このたびは、早速、あほな私に対してレスしていただきありがとうございます。

> 又は MsgBox Format(tmp, "@@@.@") のようにして表示させて見て下さい。

少し理解できました。
また、よろしくお願いします。

投稿時間:2003/08/10(Sun) 19:04
投稿者名:nobu
Eメール:
URL :
タイトル:
Re^5: 桁数(小数点固定)の固定入力
> Private Sub Text1_Change()
> Dim s As String
>
>     s = Text1.Text
>     Debug.Print Format(s, "@@@.@")
>     Label1.Caption = s
>    
> End Sub

...では Label に表示する s は s = Text1.Text のままですから
1234ならそのままの1234ですね。
下記のようにすれば良いです。

Label1.Caption = Format(s, "@@@.@")

Debug.Print は花ちゃんさんが説明してくれた通りで
質問に対するフォロー時に結果を確認する為に良く
書かれる事ですので覚えて置いて下さい。
実際には使用する Label や TextBox やPrintでファイルに
書き出す等の処理が必要になります。
MsgBox でも結果表示・確認が出来ますが Debug.Print を
使って例を書くことも多いです。

投稿時間:2003/08/10(Sun) 20:45
投稿者名:たけちゃん
Eメール:
URL :
タイトル:
Re^6: 桁数(小数点固定)の固定入力
こんばんは。たびたび早速のレスありがたく思います。

> Debug.Print は花ちゃんさんが説明してくれた通りで
> 質問に対するフォロー時に結果を確認する為に良く
> 書かれる事ですので覚えて置いて下さい。
> 実際には使用する Label や TextBox やPrintでファイルに
> 書き出す等の処理が必要になります。
> MsgBox でも結果表示・確認が出来ますが Debug.Print を
> 使って例を書くことも多いです。

早速、ためしましたら、表示できました。少し質問の仕方がわるかったので深く
お詫びします。
質問をかえて投稿します。

投稿時間:2003/08/10(Sun) 21:00
投稿者名:たけちゃん
Eメール:
URL :
タイトル:
質問をかえて!!
たびたびすみません。

テキストボックス2個とラベル1個を作成します。

テキストボックス1:身長の値の小数点から上の3桁を入力
ラベル1     :小数点をあらかじめ表示
テキストボックス2:小数点第1位

1.テキストボックス1に3桁が入力できたら、自動的にテキストボックス2に移るように
  する。
2.テキストボックス1、ラベル1、テキストボックス2をあわせて、ひとつの数値として
  認識させる。

上記1、2をクリアするためのコーディングはどのようにすればいいのですか?
ご多忙中のところ、すみません。
あと勉強不足だとは思いますが、お許しください。

投稿時間:2003/08/10(Sun) 21:35
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 質問をかえて!!
全部コードを書いてしまうと勉強にならないし、文書で書くと伝わりにくいので
考え方だけ、どのイベントに書くかエラーチェックをどうするか等工夫して下さい。
又、Text1.MaxLength についても調べて下さい。

Private Sub Text1_Change()
    If Len(Text1.Text) >= 3 Then
        Label1.Caption = CSng(Text1.Text)
        Text2.SetFocus
    End If
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyReturn Then
        KeyAscii = 0
        Label1.Caption = CSng(Text1.Text) + CSng("." & Text2.Text)
        SendKeys "{TAB}"
    End If
End Sub

投稿時間:2003/08/12(Tue) 13:04
投稿者名:たけちゃん
Eメール:
URL :
タイトル:
maxlengthとlenの違いは?
こんにちは。
花さんに教えていただいたMaxlengthを使用しようと試しました。

1.プロバティーにてMaxlengthを3にあらかじめ設定。
2.その上で下記のコーディングで実行しようとしたのですが、できない
  みたいです。どうしてですか?

Private Sub Text1_Change()
If Text1.MaxLength >= 4 Then
   Debug.Print Text1.Text
   Text2.SetFocus
End If

End Sub

あと、Len関数を少し試したのですが、これは、バイト数で文字の
入力数を設定するのですか?

投稿時間:2003/08/12(Tue) 13:15
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: maxlengthとlenの違いは?
> こんにちは。
> 花さんに教えていただいたMaxlengthを使用しようと試しました。
>
> 1.プロバティーにてMaxlengthを3にあらかじめ設定。
> 2.その上で下記のコーディングで実行しようとしたのですが、できない
>   みたいです。どうしてですか?
>
> Private Sub Text1_Change()
> If Text1.MaxLength >= 4 Then
>    Debug.Print Text1.Text
>    Text2.SetFocus
> End If
>
> End Sub

プロバティーにてMaxlengthを3にあらかじめ設定してあるのであれば
上記コードは実行されません
If 3 >= 4 Then となるからです。

> あと、Len関数を少し試したのですが、これは、バイト数で文字の
> 入力数を設定するのですか?
Len の文字のところにカーソルを置いて[F1]キーを押して見てください。
まず、このように疑問点はヘルプで調べるようにして下さい。
因みに、VBの場合半角も全角も2バイトになります。

投稿時間:2003/08/12(Tue) 23:52
投稿者名:たけちゃん
Eメール:
URL :
タイトル:
Re^2: maxlengthとlenの違いは?
こんばんは。花ちゃん。
また、レスありがとうございます。

再度、試してみます。

投稿時間:2003/08/13(Wed) 00:09
投稿者名:たけちゃん
Eメール:
URL :
タイトル:
Re^2: maxlengthとlenの違いは?
再度、すみません。

今度は、プロバティーでは、テキストボックスのMaxlengthを0にしたまま、
下記のコーディングで試したが、できません。
なぜでしょうか?

Private Sub Text1_Change()
If Text1.MaxLength > 3 Then
    Text2.SetFocus
    Debug.Print Text1.Text
End If
End Sub

投稿時間:2003/08/13(Wed) 00:26
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: maxlengthとlenの違いは?
No.5365 の回答を見て下さい。下記のように書いていたと思うのですが。

> Len の文字のところにカーソルを置いて[F1]キーを押して見てください。
> まず、このように疑問点はヘルプで調べるようにして下さい。


No.5325でも下記のように書いていたと思うのですが
> 又、Text1.MaxLength についても調べて下さい。

MaxLength とはなにか調べましたか?。

MaxLength プロパティ(ヘルプより抜粋)
テキスト ボックス (TextBox) コントロールに入力する文字数を制限するかどうかを
示す値を設定します。値の取得も可能です。
入力可能な文字数を制限する場合は、その最大値を指定します。

Len 関数(ヘルプより抜粋)
指定した文字列の文字数を返します。

投稿時間:2003/08/13(Wed) 01:23
投稿者名:たけちゃん
Eメール:
URL :
タイトル:
ご迷惑をかけてます。
たびたびすみません。
頭が少し迷路になってきてます。

> MaxLength とはなにか調べましたか?。
>
> MaxLength プロパティ(ヘルプより抜粋)
> テキスト ボックス (TextBox) コントロールに入力する文字数を制限するかどうかを
> 示す値を設定します。値の取得も可能です。
> 入力可能な文字数を制限する場合は、その最大値を指定します。

 自分なりに調べたのですが、理解できてないんですね。最大値を設定しておけば、
 その最大値を越えたら、次のテキストボックスにフォーカスを移動するという
 考えでしたが、結局、Maxlengthでのif文は、できないことが、わかりました。
 結局、Len関数しか使えないような気がしました。

ほんとに、親切丁寧にご指導いただいたことを感謝しております。今後とも
よろしくお願いします。

投稿時間:2003/08/10(Sun) 21:36
投稿者名:nobu
Eメール:
URL :
タイトル:
Re: 質問をかえて!!
> 1.テキストボックス1に3桁が入力できたら、自動的にテキストボックス2に移るように
>   する。

SetFocus を調べて下さい。

> 2.テキストボックス1、ラベル1、テキストボックス2をあわせて、ひとつの数値として
>   認識させる。

文字列を結合するにはどうするかをまだ知らない?

a = "123"
b = "456"
c = a & b   '  ===>  c = "123456"

c = "123" & "456"   '  ===>  c = "123456"

> 上記1、2をクリアするためのコーディングはどのようにすればいいのですか?

クリア とは空白をセットすれば良いです。
空白とは ""

VBの参考書を購入して基礎を勉強して下さい。
どの参考書にも書かれている事です。

投稿時間:2003/08/11(Mon) 22:11
投稿者名:たけちゃん
Eメール:
URL :
タイトル:
nobuさん、花さんありがとうございます
レス遅れましてすみませんでした。
再度、自分なりに勉強します。

また、その時は、よろしくお願いします。