[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルの数字をテキストボックスに表示したい』(あんぱん)
[セルに表示されている数字をテキストボックスに表示したい]
[セルに表示されている[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)
テキストボックスにセルの値を代入するコードを そのまま掲示板へ貼り付けていただければ 具体的にコードを修正できると思います。 ・・・・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; (川野鮎太郎)
面白くなかったですか? そうか、こういうところが変人の証なのか。。 (変人みやほりん)
↓いまはこんな風になってます・・・・・^^;
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初心者にとって、目から鱗の御指導でございました。
>テキストボックスはセルの値と連動しているわけではないので
次のステップへ参ります。
(あんぱん)
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 とすると、数値として代入されます。 (みやほりん) >※もっと簡単に書く方法はないもんじゃろか^^; 「プログラムは書かれたことは確実に実行する。」 「書かれていないことは勝手に実行しない。」 「省略すれば省略したようにしか動かない。」 厳密に書けば書くほど確実な動作が期待できます。
>厳密に書けば書くほど確実な動作が期待できます。
死ぬほどステートメント書きます^^;
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.