[[20141214183352]] 『テキストボックスに入力されている数の増や(減ら)』(おだてつ) ページの最後に飛ぶ

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

 

『テキストボックスに入力されている数の増や(減ら)しかた、教えてください…。』(おだてつ)

マクロのユーザーフォームのテキストボックスに、あらかじめ0と入力されていて、とあるボタンを押すとその数(0)が1増えたりする方法が分かりません。ちなみに、セルの方法と同じように、

Range("TextBox1").Value = Range("TextBox1").Value + 1

という方法でやっていますが、うまくいきません。マクロ初心者なので、なるべく簡単にお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 Spinbuttonというコントロールが使われてる事例を目にしますよね!!
 Excel/VBAのユーザーフォームにもありますから、これを使ってみてはいかがですか?
 SpinButton1_SpinUp イベントと SpinButton1_SpinDown等を使うと出来ると思いますよ!!

 >Range("TextBox1").Value = Range("TextBox1").Value + 1 
 これでは、うまくいきませんよ!! この掲示板の 校内全文検索で

 UserForm TextBox 等で検索して TextBoxというコントロールがどのような書式で
 使われているか調べるてみることですよ!!

(ichinose) 2014/12/14(日) 19:01


とりあえず、任意ボタンでの例。

 Private Sub CommandButton1_Click()
    TextBox1.Value = Val(TextBox1.Value) + 1
 End Sub
(???) 2014/12/15(月) 10:00

ichinoseさん、???さん、教えて下さりありがとうございます!!

ichinoseさん
エクセルマクロの方の操作はまだ慣れていなかったので、最初「スピンボタン?」と、思いましたが、確認してみたらありました。スピンボタンは今まで使ったことがなかったのでどういう動きができるか知りませんでした。回答を見たとき、「なるほど、そういう方法もあったのか〜」と、思いました。ありがとうございます!!

???さん
コードをコピーし、やってみたところ、うまくいきました!(うまくいって心の中で「ヤッターー!!」と叫んでいました(笑))ありがとうございます!!

今は、???さんの方でやっています。シンプルなのと、ボタン&テキストボックスがたくさんあり、すでにコードが多くて見えにくい(わかりにくい)状態になっているからです。慣れてきたら、ichinoseさんの方法を使ってやっていきたいと思います。優しく&解り易く教えて下さり、ありがとうございました!!また、質問することがあると思いますので、宜しくお願いします。
(おだてつ) 2014/12/15(月) 18:17


と、確認してみたら、一回閉じて、もう一度開くと値(数字)リセットされています。

テキストボックスに『0』で実行。

ボタンを一回押して0>1へ。

閉じる。

再度開く。

テキストボックスが1ではなく0に…。

何か解決法はありますか!!??

教えてください…。
(おだてつ) 2014/12/17(水) 18:02


 ユーザーフォームは、ユーザーとプログラムとのデータの受け渡しを行う場所です。
 ユーザーが入力された情報は、プログラムが何らかの方法で処理を行います。

 ユーザーフォームの機能は簡単に言えば これだけの機能です。
 ユーザーフォームが閉じられてしまうと プログラムが何らかの処理を行わないと
 入力されたデータも消えてしまいます。

 ここで言う何らかの処理とは、 入力されたデータをどこかに保存するという作業です。
 そして再びユーザーフォームを表示するときには、保存したデータを表示時に
 所定の場所(ここではテキストボックス)に設定する処理も必要です。

 方法は、・・・・・

 入力されたテキストボックスの内容をユーザーフォームが閉じられるタイミングで
 どこかのセルに保存し、再表示時には、再びそのセルからテキストボックスに内容を表示する。

 これは、よく使われる方法だと思います。
 この場合、ブックを閉じたときは、このセルのデータをどこかに保存しなければなりません。
 これをどこにするかも 考えどころです。
 簡単な作りの場合は、そのままブックを保存するという方法もありますが、
 VBAコードのあるブックとデータをおくブックは分けるという事は、よく言われていることです。
 この辺りも作る内容によって よくよく検討します。

 こんな方法もあるという事例だけご紹介しておきます。

 新規ブックにて
  ユーザフォームを作成してください(既定のUserForm1)
  このUserForm1にテキストボックスを一つ作成してください(TextBox1)。
    標準モジュールに

 Option Explicit
 Sub test()
    UserForm1.Show
 End Sub

 UserForm1のモジュールに

 Option Explicit
 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then
       Cancel = True
       Me.Hide
    End If
 End Sub

 testを実行してみてください。UserForm1が表示されます。

 テキストボックスに何か入力してください。次に 閉じるボタン(Xボタン)をクリックしてUserFormを消してください。

 再度、testを実行してみてください、 テキストボックスに入力した内容が表示されますよね!!

 簡単な作りの場合、こんな方法も考えられます。

 これはユーザーがUserformを閉じても実際には閉じていない(非表示にしているだけ)
 という操作をしている例です。

 もっとも私は、長期の値の保持のために上記のコードを作成したことはないですけどね!!

(ichinose) 2014/12/18(木) 06:47


せっかくExcelなんですから、私だったら値をどこかのセルに保持しますね。

 Private Sub CommandButton1_Click()
    TextBox1.Value = Val(TextBox1.Value) + 1
    Sheet1.Range("A1").Value = TextBox1.Value
 End Sub

 Private Sub UserForm_Initialize()
    TextBox1.Value = Sheet1.Range("A1").Value
 End Sub
(???) 2014/12/18(木) 08:39

うまくいきました!!ありがとうございます。やはり、非公開にするよりもどこかに保存させる方がいいですね。そのシートごと消しても維持できるので。&返信遅れてすいませんでしたっ!!
(おだてつ) 2014/12/26(金) 20:11

コメント返信:

[ 一覧(最新更新順) ]


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