[[20041102030334]] 『セルの数字をテキストボックスに表示したい』(あんぱん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セルの数字をテキストボックスに表示したい』(あんぱん)

[セルに表示されている数字をテキストボックスに表示したい]

[セルに表示されている[100,000]をテキストボックスにそのまま表示したい]
かれこれ5時間・・悪戦苦闘してます。もうだめ。教えてくだされ。
シートに「桁区切り」した数値(例えば、100,000)をユーザーフォームの上に貼り付けたテキストボックスにそのまま表示しようとしても、桁区切りされることなく100000としか表示されません。どうすればよいのか教えてください。日付なら上手に表示されるのに・・・。どうぞよろしくお願いします。


 TextBox1.Value = Worksheets("Sheet1").Range("A1").Value 
などとされていると思いますが、
この場合、セル表示が桁区切りでも返されている値は
「100000」という数値です。
テキストボックスには値のみ代入されるので、
書式情報まではついてきません。
Format関数で表示したいテキストを作成する必要があります。
 TextBox1.Value = Format(Worksheets("Sheet1").Range("A1").Value , "#,##0")
(みやほりん)


 ユーザーフォームに手を加えて良いのであれば、図のリンク貼付という手も。
 (セルを通常どおりコピーして、Shiftを押しながら編集→図のリンク貼付)
 書式が全て反映されてしまうので、状況によっては使いづらいかもしれませんが、
 単に表示は反映されますよ。
 一度その形で貼付しておけば、その後はセルの数字を変えるだけです。(SHEY)

「みやほりん」さん、「SHEY」さん・・・どうもありがとうございます。
ご両人にご指導頂いた方法で、今悪戦苦闘(昨夜に引き続き^^;)しております。
今のところ、まだ成果は出せておりません。あれこれやりながら、試してます。ご両人ではれば、瞬時にできるところでしょうが、私(40の手習い^^)はすでに、このためだけに5時間は費やしているものと思われます^^;後の喜び(カンマがついた!)のためにもう少しやってみます。たぶん、またご指導いただくことになると思いますが、よろしくお願いいたします。(あんぱん)

 テキストボックスにセルの値を代入するコードを
そのまま掲示板へ貼り付けていただければ
具体的にコードを修正できると思います。
・・・・VBAでの話ですよね?
(みやほりん)

 お手数かけてすみません。
 出ました!!・・・桁区切り^^
 ・・・でも、です。何もしないとテキストボックスに「桁区切りされた数字」が表示されません・・・はぁ・・・。
 →何らかの数字を入力したら「a1」の数字は表示されるんですが、フォームを表示させただけでは、「数字」は表示されません。
 ・・・んで、私のしたいことですが・・・
 @ブックを開く
 Aダブルクリック→フォームを表示
 Bフォーム上にシートにある「数字」を桁区切りで表示

 今のところ下のようになってます。 

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 UserForm1.Show
 End Sub

 Private Sub TextBox1_Change()
 TextBox1.Value = Format(Worksheets("Sheet1").Range("A1").Value, "#,##0")
 End Sub

お手数かけてすみません。


 その様な場合はフォームに記述します。
(SoulMan)
Private Sub UserForm_Initialize()
    TextBox1.Value = Format(Worksheets("Sheet1").Range("A1").Value, "#,##0")
End Sub

 Manちゃんに先手を取られました。
 
TextBox1_Change()は
「TextBox1の値が変更」された時に発生するイベント。
だから、このままなら、TextBox1に何か入力すれば
ご希望のテキストで表示されるはず。そのまま試してみても面白そうですが。
 
この場合はフォームが表示された時にTextBox1に
セルの値を代入したいのだから、
UserForm1_Initialize()イベントに
TextBox1.Value = Format(Worksheets("Sheet1").Range("A1").Value, "#,##0")
を記述すべき。
(みやほりん)


 >そのまま試してみても面白そうですが。
 面白く無かったです_/ ̄|○ il||li
 何を入れてもA1の数値が出るだけですし(^_^A;
 (川野鮎太郎)

 面白くなかったですか?
そうか、こういうところが変人の証なのか。。
            (変人みやほりん)

"ぎゃはははは"・・・出来ました^^。区切りが出て、フォームを開いたらa1の数字が出て・・・思わず笑み・・ですw。「みやほりん」さん、「SHEY」さん「SoulMan」さん「川野鮎太郎」さん・・・ホントありがとうございました。・・・んで、最後にタブストップをFALSEにすれば・・・はい!!^^OKでした。感謝です^^;・・・「コレ」が出来るまでもう少しかかりそうですが、「ぶつかったら」またお願いするかも?(きっとお願いすることになると思いますが^^;)・・・その節はよろしくお願い致します。ほんとうにありがとうございました。

すみません。やはり、ぶつかってしまいました。今度は・・・
@ユーザーフォームのテキストボックスから数字を入力→この時、テキストボックス内の表示で「桁区切り」をする。
Aセルにこの数字を表示する。→この数字を使って別のセルで計算。
B一旦、ブックを閉じる。
Cブックを開く。
Dユーザーフォームに作ってあるコマンドボタンをクリックしてこの数字をデリートする。
☆@からCはOKなんですが、Dでクリックしたら、コンボボックス内のデータ(文字)は消去されるんですが、テキストボックス内のデータ(数字)はデータが残ったままになってしまいます。→シート上のセルからはデリートできています。何でだろう???

↓いまはこんな風になってます・・・・・^^;
Private Sub テキスト大阪契約7_Change()

    Range("R8") = テキスト大阪契約7
    テキスト大阪契約7.Value = Format(Worksheets("@").Range("R8").Value, "#,##0")
End Sub

Private Sub 大阪入力のリセット_Click()

    Range("L2:U8").Select
    Selection.ClearContents
    Range("L2").Select

End Sub

☆R8の数字は消えてるのに・・・テキスト大阪契約7の数字が消えてくれない^^;

  実際は大阪契約1〜10まであってすべて消去したい。

お手数かけますが、お教えください。(あんぱん)


 テキストボックスはセルの値と連動しているわけではないので、
TextBox1.Value = ""
などと、値に空白を代入するなどしてあげないとだめです。
このとき、テキストボックスのChangeイベント等も発生してしまうので、
もしChangeイベント、Updateイベントのマクロを設定している場合は
「空白の場合は処理をスキップする」等の処理も必要になる場合があります。

(みやほりん)


みやほりんさんへ

ありがとうございました。できました(消えました^^)VBA初心者にとって、目から鱗の御指導でございました。

>テキストボックスはセルの値と連動しているわけではないので

次のステップへ参ります。
(あんぱん)


すみません。また教えてください。VBAの勉強しながらの作業ですので、デバックの嵐に巻き込まれています。@ユーザーフォームのテキストボックスからの金額入力・・・(1)テキストボックス1に金額を入力しセルに表示→この時、入力時に三桁区切りにする。同様にテキストボックス2.でも同様の入力をしに表示する。Aこの後、テキストボックス3.に二つのセルの合計をテキストボックス3.に三桁区切りで表示する。Bコマンドボタンで二つのセルをクリアにする。・・・この流れなんですが、@とAはOKなんですが、Bのクリアをするとデバッグになります。何が、悪いんでしょうか?助けてください。
Private Sub テキスト大阪契約1_Change()
    Range("r2") = テキスト大阪契約1
    テキスト大阪契約1.Value = Format(Worksheets("@").Range("r2").Value, "#,##0")
    大阪本日の売上 = Range("b11").Value
    大阪本日の売上.Value = Format(Worksheets("@").Range("b11").Value, "#,##0")
    本日の売上 = Range("b3")
    本日の売上.Value = Format(Worksheets("@").Range("b3").Value, "#,##0")
End Sub

Private Sub テキスト大阪契約2_Change()

    Range("r3") = テキスト大阪契約2
    テキスト大阪契約2.Value = Format(Worksheets("@").Range("r3").Value, "#,##0")
    大阪本日の売上 = Range("b11").Value
    大阪本日の売上.Value = Format(Worksheets("@").Range("b11").Value, "#,##0")
    本日の売上 = Range("b3")
    本日の売上.Value = Format(Worksheets("@").Range("b3").Value, "#,##0")
End Sub
↑これがテキスト大阪契約7まであります。同様に東京契約も1〜7まであります。

Private Sub テキスト東京契約1_Change()

    Range("r9") = テキスト東京契約1
    テキスト東京契約1.Value = Format(Worksheets("@").Range("r9").Value, "#,##0")
    東京本日の売上 = Range("b17").Value
    東京本日の売上.Value = Format(Worksheets("@").Range("b17").Value, "#,##0")
    本日の売上 = Range("b3")
    本日の売上.Value = Format(Worksheets("@").Range("b3").Value, "#,##0")
End Sub

@テキストボックスからの入力で大阪契約1はR2へ三桁区切りで(入力時も3桁区切り)
A大阪契約1〜7の合計を大阪本日の売上へ←わからんので、一旦セルに入った数値をB11で合計してます。
しかも、数値じゃないみたいなんで、V2,V3・・・でR2*1・・・の計算をしてB11=sum(V2:V8)にしてます。  
B東京も同上
C大阪本日の売上と東京本日の売上を本日の売上で合計←ここもわからんので、一旦B3で合計してます。
D日付更新で大阪契約1〜7をコマンドボタンで消去
  Private Sub 大阪入力のリセット_Click()

    Range("L2:U8").Select  'L2からL8には担当者名等がはいっています。
    Selection.ClearContents
    テキスト大阪契約1.Value = ""
    テキスト大阪契約2.Value = ""
    テキスト大阪契約3.Value = ""
    テキスト大阪契約4.Value = ""
    テキスト大阪契約5.Value = ""
    テキスト大阪契約6.Value = ""
    テキスト大阪契約7.Value = ""
End Sub

あとこんなんもあります・・・
Private Sub UserForm_Initialize()

        本日の売上.Value = Format(Worksheets("@").Range("b3").Value, "#,##0")
        ・・・・
※もっと簡単に書く方法はないもんじゃろか^^;
ちなみに、マルチページでPAGE1=集計、PAGE2=大阪・・・みたいになってます。

よろしくお願いいたしまする。


 デバッグになるのはどこでデバッグになっていますか?
肝心の
Bコマンドボタンで二つのセルをクリアにする。
これのコードが見たいですね。
あとはエラーの種類。
 
>一旦セルに入った数値をB11で合計してます。
>しかも、数値じゃないみたいなんで
 
Range("A1") = TextBox1
 
このようにするとセル代入時に「文字列」になります。
テキストボックスの既定値は文字列であるためです。
この場合はプロパティ省略しないで
 
Range("B1").Value = TextBox1.Value
 
とすると、数値として代入されます。
(みやほりん)
 
>※もっと簡単に書く方法はないもんじゃろか^^;
「プログラムは書かれたことは確実に実行する。」
「書かれていないことは勝手に実行しない。」
「省略すれば省略したようにしか動かない。」
厳密に書けば書くほど確実な動作が期待できます。


valueプロパティーを設定できません。種類が一致しません。
・・・という内容で、
大阪本日の売上 = Range("b11").Value
のところでとまってしまいます。
テキストボックスの中に数値が入ってないと処理をしてくれてるんですが・・・入ってなければ消去する必要もないし・・・

>厳密に書けば書くほど確実な動作が期待できます。

死ぬほどステートメント書きます^^;


みやほりんさん
ありがとうございました^^
とどこうりなく、デバッグがでなくなりました^^


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.