プロが教える店舗&オフィスのセキュリティ対策術

A1セルに12.345と入力してあり、書式は「数値」で小数点以下の桁数2にしてあり、
「12.35」と表示されます。

VBAを起動して、ユーザーフォームを挿入し、
テキストボックスを作成し、
TextBox1の「ControlSource」にA1と入力すると
TextBox1には「12.345」と表示されます。

エクセルのA1と同じ様に
TextBox1も「12.35」と表示したいのですがどうすればいいのでしょうか?

エクセル2003です。
よろしくお願い致します。

A 回答 (3件)

こんばんは。



>TextBox1の「ControlSource」にA1と入力すると

としたら、セルと連動するのですから、セルを合わせるか、テキストボックスを合わせるかしても、結果的に同じ値になるのですから、TextBox1 とA1 を、そのままつなげることはできません。

テキストボックスのダミーを設けます。(ここでは、TextBox2 とします)
そして、そちらに、ControlSource = A1 と置き、プロパティの Visible =False にします。

'ユーザーフォームモジュール

Private Sub TextBox2_Change()
 Dim buf As Variant
 buf = ActiveSheet.Range("A1").Text
 If IsNumeric(buf) Then
   TextBox1.Text = Format(buf, "#,##0.00")
 End If
End Sub

Private Sub UserForm_Initialize()
  TextBox1.Text = ActiveSheet.Range("A1").Text
End Sub

なお、テキストボックスの表示の基本は、Text ですから、表示は、あくまでも、文字列です。ですから、そこに書式自体は、イタリックや太字などの文字列書式しか存在していません。
    • good
    • 0
この回答へのお礼

できました。
大変参考になりました。ご回答ありがとうございます。

お礼日時:2007/10/30 13:18

エクセルのA1セルの書式を小数点以下2桁にしても、テキストボックスには反映されなかった。


多分セルの「値」を持ってくるので、表示形式の設定まではセルからテキストボックスには移らないのでしょう。
テキストボックスのプロパティを見たが、表示形式を設定する項目は
見つからなかった(?100%は自信はない)
テキストボックスは入力用を主に考え、表示用は十分考えられてないのかな。
それで
Private Sub UserForm_Initialize()
UserForm1.TextBox1.Text = Format(UserForm1.TextBox1.Text, "0000.00")
End Sub
を入れると実現はできた。
こういう方法しかないか、100%は自信はないが。
    • good
    • 0
この回答へのお礼

できました!
大変参考になりました。ご回答ありがとうございます。

お礼日時:2007/10/30 11:54

A1セルのところをハイライトにし→右クリック→セルの書式設定→


表示形式→数値→小数点以下の桁数の欄→2にする→1234を選ぶ→OK
完了

この回答への補足

>A1セルのところをハイライト
というのは、エクセルの画面に戻ってA1セルをアクティブにするということでしょうか?

補足日時:2007/10/25 19:42
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています