Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12463 / 13645 ツリー ←次へ | 前へ→

【10377】テキストボックスの表示桁数の指定 miya 04/1/21(水) 19:57 質問
【10378】Re:テキストボックスの表示桁数の指定 Seraph 04/1/21(水) 20:47 回答
【10381】Re:テキストボックスの表示桁数の指定 miya 04/1/22(木) 13:52 質問
【10383】Re:テキストボックスの表示桁数の指定 Seraph 04/1/22(木) 14:51 回答
【10384】Re:テキストボックスの表示桁数の指定 miya 04/1/22(木) 15:26 お礼

【10377】テキストボックスの表示桁数の指定
質問  miya  - 04/1/21(水) 19:57 -

引用なし
パスワード
   各セルにいろいろな桁が入力したもの
例えば
0.00001231
1.202
10012.3
などがあるのですが、
これらを
UserForm内のテキストボックスに表示させる際に
桁数を指定して表示させたいのですが、
どのようにすれば出来るのでしょうか?
よろしくお願いします。

【10378】Re:テキストボックスの表示桁数の指定
回答  Seraph  - 04/1/21(水) 20:47 -

引用なし
パスワード
   ▼miya さん:こんばんは

Format()関数ではだめですか?

>各セルにいろいろな桁が入力したもの
>例えば
>0.00001231
>1.202
>10012.3
>などがあるのですが、
>これらを
>UserForm内のテキストボックスに表示させる際に
>桁数を指定して表示させたいのですが、
>どのようにすれば出来るのでしょうか?
>よろしくお願いします。

上記の数値をこの関数を使用すると

?format(0.00001231, "0.0000")
0.0000
?format(1.202,   "0.0000")
1.2020
?format(10012.3,  "0.0000")
10012.3000

のようになります。

もし、ちがってたら、具体的にどのように表現したいか
教えてください。

【10381】Re:テキストボックスの表示桁数の指定
質問  miya  - 04/1/22(木) 13:52 -

引用なし
パスワード
   ▼Seraph さん:ありがとうございます。
>
>上記の数値をこの関数を使用すると
>
>?format(0.00001231, "0.0000")
>0.0000
>?format(1.202,   "0.0000")
>1.2020
>?format(10012.3,  "0.0000")
>10012.3000
>
>のようになります。
>
>もし、ちがってたら、具体的にどのように表現したいか
>教えてください。

ご教授どおり行うと上手くいきました。
しかし、以下の問題が発生したので
申し訳ありませんがよろしくお願いします。


ユーザーフォームを開いたときにフォーム上にある20個のテキストボックス
にシート上の[A1:A20]の値を初期値として表示させる為に、
あらかじめ
 「TexBox1 のTag には 1 」
 「TexBox2 のTag には 2 」
 「TexBox3 のTag には 3 」・・・
という具合に、Tagの値が目的のセルの行番号に相当するように設定して、
Userform_Intializeに

Private Sub UserForm_Initialize()
  Dim myC As Control
  For Each myC In Controls
    If myC.Tag <> "" Then
            'Tagに設定値があれば
      myC.Value = Format(Cells(myC.Tag, 1), "#0.##")
    End If
  Next
End Sub

というような記述してUserformのテキストボックスに表示させているのですが、
セルの値が整数「10」の場合、テキストボックスに表示される値が
「 10. 」と小数点が表示してしまいます。
整数はそのままで、小数点がある場合は
下2桁までの表示にしたいのですが
どうすればよいでしょうか?

【10383】Re:テキストボックスの表示桁数の指定
回答  Seraph  - 04/1/22(木) 14:51 -

引用なし
パスワード
   ▼miya さん:

あまりエレガントではないかもしれませんが、、、

少数以下が有るか無いかを判定して、Format関数を別々に呼出すと言うのは
どうでしょう?

このコードを
>      myC.Value = Format(Cells(myC.Tag, 1), "#0.##")

こんなカンジにしてみる、、、
  If Cells(myC.Tag, 1) = Fix(Cells(myC.Tag, 1)) Then
    myC.Value = Format(Cells(myC.Tag, 1), "#0.##")
  Else
    myC.Value = Format(Cells(myC.Tag, 1), "#0")
    'または myC.Value = CStr(Cells(myC.Tag, 1))
  End If

>セルの値が整数「10」の場合、テキストボックスに表示される値が
>「 10. 」と小数点が表示してしまいます。
>整数はそのままで、小数点がある場合は
>下2桁までの表示にしたいのですが
>どうすればよいでしょうか?

セル参照のコードが冗長になって気になる場合は、変数に取ってもいいと思います。
#好みや、Single型の使用が許されるかで色々でしょうが、、、
#こんなカンジにも書けます。

Dim myC       As Control
Dim bPoint     As Boolean
Dim sglCellValue  As Single
  For Each myC In Controls
    'Tagに設定値があれば
    If myC.Tag <> "" Then
      'セルの値をとる
      sglCellValue = CSng(Val(Cells(myC.Tag, 1)))
      '小数点以下があるか判定
      bPoint = sglCellValue <> Fix(sglCellValue)
      '整形して表示
      myC.Value = Format(Cells(myC.Tag, 1), IIf(bPoint, "#0.##", "#0"))
    End If
  Next

【10384】Re:テキストボックスの表示桁数の指定
お礼  miya  - 04/1/22(木) 15:26 -

引用なし
パスワード
   ▼Seraph さん:

ご連絡ありがとうございました。
何とか無事に解決しました。
今後も精進しますのでよろしくお願いします。

12463 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free