advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 978 for チェックボックス (0.008 sec.)
[[20130903152747]]
#score: 5499
@digest: b4d78b756ead0331a97ca5df90b238a5
@id: 63355
@mdate: 2013-09-06T02:09:32Z
@size: 14106
@type: text/plain
#keywords: checkandsettxt1 (134969), txt3 (82527), txt4 (75453), txt5 (58145), chk1 (46907), chk2 (34995), txt1 (33003), スtx (31175), checkandsettextbox4 (30483), checkandsettxt2 (30483), chk4 (29523), txt2 (27816), chk3 (27437), 御## (22862), ばtx (18175), afterupdate (17130), textbox4 (15615), textbox3 (13558), ス制 (10453), 付随 (8799), textbox2 (7263), トボ (6325), クボ (6057), private (5755), 白じ (5574), textbox5 (5147), テキ (4975), textbox1 (4954), 稲葉 (4825), ボッ (4763), キス (4598), value (4047)
『VBA条件式?』(初心者)
ユーザーフォームにTextBox1、TextBox2、TextBox3、TextBox4の 4つテキストボックスがあるとします。 さらにTextBox1には1000(固定)という値が TextBox2には2000(固定)という値が TextBox3には3000という値が TextBox4には1000(固定)という値が 入っています。TextBox3に関しては固定ではなく、自由に変更可能な値を入れられます。 TextBox4にも値が入っているのですが、TextBox1、TextBox2、TextBox3に値がある時のみ TextBox4の値を0に変更したいのです。 どういうコードを書けば良いでしょうか? ---- 結局 TextBox3 次第であれば、こういうことでしょうか。 (Mook) Private Sub TextBox3_AfterUpdate() If TextBox3.Value = "" Then TextBox4.Value = "1000" Else TextBox4.Value = "0" End If End Sub ---- ありがとうございます!どんな風に検索したら出てくるのかわからず途方にくれてました! これでうまくいきました。本当に感謝です!! ---- すみません、TextBox1とTextBox2とTextBox4どれかに固定値が入っていない場合にも0になってしまいました・・ 値が入らない時もあるのです。書き忘れましてすみません。 つまりはTextBox1に値があり、かつTextBox2にも値があり、かつTextBox3にも値があるときのみ TextBox4の値を0にしたいのです。 その場合は何か可能なコードありますか? ---- 試してないけど・・・ Mookさんの拝借 Private Sub TextBox3_AfterUpdate() Dim x As Long Select Case "" Case TextBox3.Value: x = 0 Case TextBox2.Value: x = 0 Case TextBox1.Value: x = 0 Case Else: x = 1000 End Select TextBox1.Value = x End Sub (稲葉) ---- ん?ということは説明中の「固定」とはどういう意味でしょう。 というのはさておき、 1〜3があるときという条件であれば、こんな感じでしょうか。 #ぶつかったけれど、そのままアップします。 (Mook) Private Sub TextBox1_AfterUpdate() CheckAndSetTextBox4 End Sub Private Sub TextBox2_AfterUpdate() CheckAndSetTextBox4 End Sub Private Sub TextBox3_AfterUpdate() CheckAndSetTextBox4 End Sub Private Sub CheckAndSetTextBox4() If TextBox1.Value <> "" And TextBox2.Value <> "" And TextBox3.Value <> "" Then TextBox4.Value = "0" Else TextBox4.Value = "1000" End If End Sub ---- ありがとうございます。うまくいきました! ---- どなたか解答をお願いします。また追加が出ました・・・ TextBox1(値100)、TextBox2(値100)、TextBox3(値ランダム)、TextBox4(値300)、TextBox5(値150)にはそれぞれその時々で値が入ります。 TextBox1に値があり、かつTextBox2にも値があり、かつTextBox3にも値があるときのみTextBox4とTextBox5の値を0にしたいです。 コード初心者で追加がいまいちわかりません。教えてくださいお願いしますm(_ _)m (初心者) ---- ランダムって、手入力ってことだよね? Private Sub TextBox3_AfterUpdate() 'テキストボックス3が更新された後、実行します。 Dim x As Long Select Case "" '各caseの値が、""の時、True(:の後の処理を実行)を返します Case TextBox3.Value: Exit Sub 'テキストボックス3が""処理を中断します。 Case TextBox2.Value: Exit Sub 'テキストボックス2が""処理を中断します。 Case TextBox1.Value: Exit Sub 'テキストボックス1が""処理を中断します。 Case Else: x = 0 '↑のいずれにも当てはまらない場合、xに0を代入します。 End Select 'テキストボックス4と5にxを代入します。 TextBox4.Value = x TextBox5.Value = x End Sub というか、前回提示したの、間違ってたね・・・ごめん (稲葉) ---- 稲葉さんありがとうございます。 はい、手入力で他はチェックボックスにチェックが入ったらテキストボックスに値が 入るようにしています。 前回のお礼を書いて何度か更新したんですが書きこまれなくてお礼が遅れてすみません。 ですが何も変化ないです・・・(泣) (初心者) ---- あ、すみません・・・TextBox4とTextBox5に値はあることが前提です。 ないときは0になりました。 (初心者) ---- 何度もすみません、少し間違いがあってうまくいきました。 ありがとうございます!!!感謝です! (初心者) ---- 書き方としてはMookさんのほうが正しいです。 例えばテキストボックス4と5もチェックボックスで値が入るようにしているなら、 テキストボックス3が入力された後に、チェックを入れられると0になりません。 なので、Mookさんのように、別にモジュールを作って、変更があった場合、都度そのモジュールを 実行させないと思わぬミスがでます。 (稲葉) ---- いえ、今のところこれで大丈夫です! また追加が出ないことを願っていますが、作成中のものが完成しましたので・・ 本当にありがとうございました。 (初心者) ---- 追加が出まして、Mookさんのを見習ってコードを書きました。 最初はわかりやすくと思ってTextBox表記にしてましたが、こんがらがってきそうなので 今のコードで値も把握しやすいものにして載せてみます。 txt1=テキストボックス txt2=テキストボックス txt3=テキストボックス txt4=テキストボックス txt5=テキストボックス txtkei=合計の値が表示するテキストボックス chk1=チェックボックス(txt1付随) chk2=チェックボックス(txt2付随) chk3=チェックボックス(txt3付随) chk4=チェックボックス(txt4付随) cmb1=合計を計算するボタン Private Sub txt3_AfterUpdate() CheckAndSettxt1 CheckAndSettxt2 End Sub Private Sub txt4_Change() CheckAndSettxt1 CheckAndSettxt2 End Sub Private Sub txt5_Change() CheckAndSettxt1 CheckAndSettxt2 End Sub Private Sub CheckAndSettxt1() If txt3.Value <> "" And txt4.Value <> "" And txt5.Value <> "" Then txt1.Value = "0" Else txt1.Value = "100" End If End Sub Private Sub CheckAndSettxt2() If txt3.Value <> "" And txt4.Value <> "" And txt5.Value <> "" Then txt2.Value = "0" Else txt2.Value = "200" End If End Sub Private Sub chk4_Click() If chk4.Value = True Then txt4 = 400 Else txt4 = "" End If End Sub Private Sub chk3_Click() If chk3.Value = True Then txt3 = 300 Else txt3 = "" End If End Sub Private Sub chk1_Click() If chk1.Value = True Then txt1 = 100 Else txt1 = "" End If End Sub Private Sub chk2_Click() If chk2.Value = True Then txt2 = 200 Else txt2 = "" End If End Sub Private Sub cmb1_Click() With UserForm1 .txtkei.Value = Val(.txt1.Value) + Val(.txt2.Value) + Val(.txt3.Value) _ + Val(.txt4.Value) + Val(.txt5.Value) End With End Sub ここまででtxt1とtxt2はtxt1,2に値がありかつtxt3,4,5に値がある時のみ0に 出来るんですが、 txt1,2に値がありかつtxt3,4に値がある時はtxt1だけを0にしたいのですが その場合どうしたら良いでしょう? ---- ご希望通りかわかりませんが。。。 '#####ここからテキストボックスが変わった時の処理 Private Sub txt3_AfterUpdate() Call CheckAndSettxt1 End Sub Private Sub txt4_Change() Call CheckAndSettxt1 End Sub Private Sub txt5_Change() CheckAndSettxt1 End Sub Private Sub CheckAndSettxt1() If txt5.Value <> "" Then 'txt5が空白じゃなければ If txt3.Value <> "" And txt4.Value <> "" Then 'txt3,4が空白じゃなければ txt1.Value = "0": chk1.Value = False txt2.Value = "0": chk2.Value = False End If ElseIf txt2.Value <> "" & txt3.Value <> "" And txt4.Value <> "" Then 'txt5が空白且つ、2,3,4が空白じゃなければ txt1.Value = "0": chk1.Value = False Else '上記のいずれかでもなければ txt1.Value = "100": chk1.Value = True txt2.Value = "200": chk2.Value = True End If End Sub '#####ここまでテキストボックスが変わった時の処理 '#####ここからチェックボックス制御##### Private Sub chk1_Click() Call cl_ch(1) End Sub Private Sub chk2_Click() Call cl_ch(2) End Sub Private Sub chk3_Click() Call cl_ch(3) End Sub Private Sub chk4_Click() Call cl_ch(4) End Sub Private Sub cl_ch(i As Variant) Dim c, t c = Array(, chk1, chk2, chk3, chk4) t = Array(, txt1, txt2, txt3, txt4) v = Array(, 100, 200, 300, 400) t(i).Value = IIf(c(i).Value, v(i), "") End Sub '#####ここまでチェックボックス制御##### Private Sub cmb1_Click() Dim t, c Dim s As Long With UserForm1 t = Array(.txt1, .txt2, .txt3, .txt4) For Each c In t s = s + Val(c.Value) Next .txtkei.Value = s End With End Sub (稲葉)再差し替え 15:44 ---- 稲葉さんありがとうございます。 少しわからない所があります・・ Private Sub chk1_Click() Call cl_sh(1) End Sub このコードのshと(1)が意味がわからず・・エラー出て、対処出来ないです。 チェックボックスをクリックしたら コンパイルエラー SubまたはFunctionが定義されていません と出ます。 どうしましょう・・ (初心者) ---- ごめんなさい、書き損じです。 Call cl_sh(1) は Call cl_ch(1) の間違いです。 ↑のコード書き直したので、一度入れ直してください。 似たような処理をするときは、別のモジュールを設けてそこで処理させることが一般的?です。 ↑の場合は、(1)の1を引数として、Sub cl_ch の処理に投げています。 で、何に使うかと言うと、Sub cl_chの中で、テキストボックスや入力したい値を配列に入れ、 同じ処理をまとめようとしています。 c = Array(, chk1, chk2, chk3, chk4) t = Array(, txt1, txt2, txt3, txt4) v = Array(, 100, 200, 300, 400) ↑でカンマ(,)から始まっている理由は、Arrayで配列を作ると、0から始まる配列になるので、 0は使わないからカンマで飛ばしています。 ごめんなさいね。 同じ条件準備するのかったるくて理論だけでたてちゃったので・・・ (稲葉) ---- 稲葉さんご説明ありがとうございます。 chに訂正したらチェックは入るんですが、値が出ません・・ そのまま計算ボタンを押してみたところ、 s = s + Val(v.Value) これにオブジェクトが必要です。と怒られました。 さっぱりわからないです(泣) (初心者) ---- s = s + Val(v.Value) ここは s = s + Val(c.Value) の間違いです。度々すみません。 >chに訂正したらチェックは入るんですが、値が出ません・・ ここはちょっと解せない・・・ 一度環境作って試します。 (稲葉) ---- >chに訂正したらチェックは入るんですが、値が出ません・・ これは試したけど出ましたよ? テキストボックスの名前とか合ってますか? それと、実際にいじってみてかなり変な動きしていますが、本当にこれでいいの・・・? (稲葉) ---- 稲葉さん度々ありがとうございます。 一つ名前間違ってて訂正したら値入るようになりました! ですが、ちょっと動きがおかしいですね・・・ AfterUpdateをChangeに変更したりしてみてるんですがどうもうまくいきません。。。 chk3のチェック外すとダメですね(苦) 本当、ややこしい条件で悩みます・・・ すみません、色々教えていただいてありがとうございます。 また少し悩んでみます。 ---- &をAndに変更したらいけました・・(汗) (初心者) ---- ほんとだ!すみませんねぇそそっかしくて でもやっぱりおかしい。 5を空白にしておいて、1234とクリックすると、4をクリックしたときに1が消える でも1をクリックすると、1にはイベントを入れてないので1にも値が入る 5が何かしら入力されていた場合も同様で、1234の4で12が消えて、12にチェック入れると 12にも値が入る これでいいの? (稲葉) ---- ---- Else '上記のいずれかでもなければ txt1.Value = "100": chk1.Value = True txt2.Value = "200": chk2.Value = True これを削除したらいい感じになりました☆ (初心者) ---- それだとやっぱり↑の問題は解決出来てないはずだから、 '#####ここからテキストボックスが変わった時の処理 Private Sub txt1_Change() Call CheckAndSettxt1 End Sub Private Sub txt2_Change() Call CheckAndSettxt1 End Sub Private Sub txt3_Change() Call CheckAndSettxt1 End Sub Private Sub txt4_Change() Call CheckAndSettxt1 End Sub Private Sub txt5_Change() CheckAndSettxt1 End Sub Private Sub CheckAndSettxt1() If txt2.Value <> "" And txt3.Value <> "" Then 'txt1,2が空白じゃなければ If txt5.Value <> "" Then 'txt5が空白じゃなければ If txt3.Value <> "" And txt4.Value <> "" Then 'txt3,4が空白じゃなければ txt1.Value = "": chk1.Value = False txt2.Value = "": chk2.Value = False End If ElseIf txt3.Value <> "" And txt4.Value <> "" Then 'txt5が空白且つ、3,4が空白じゃなければ txt1.Value = "": chk1.Value = False End If End If End Sub '#####ここまでテキストボックスが変わった時の処理 ここまでしないとだめじゃないかなぁ (稲葉) ---- 結局、こんな風に少し入れ替えたりしたら大丈夫でした。 昨日はバタバタして返信できなくて遅くなりました。 稲葉さんありがとうございました☆ Private Sub txt3_Change() CheckAndSettxt1 End Sub Private Sub txt4_Change() CheckAndSettxt1 End Sub Private Sub txt5_Change() CheckAndSettxt1 End Sub Private Sub CheckAndSettxt1() If txt5.Value <> "" Then If txt3.Value <> "" And txt4.Value <> "" Then txt1.Value = "0": chk1.Value = False txt2.Value = "0": chk2.Value = False End If ElseIf txt2.Value <> "" And txt3.Value <> "" And txt4.Value <> "" Then txt1.Value = "0": chk1.Value = False End If End Sub Private Sub chk4_Click() If chk4.Value = True Then txt4 = 400 Else txt4 = "" End If End Sub Private Sub chk3_Click() If chk3.Value = True Then txt3 = 300 Else txt3 = "" End If End Sub Private Sub chk1_Click() If chk1.Value = True Then txt1 = 100 Else txt1 = "" End If End Sub Private Sub chk2_Click() If chk2.Value = True Then txt2 = 200 Else txt2 = "" End If End Sub '#####ここまでチェックボックス制御##### Private Sub cmb1_Click() Dim t, c Dim s As Long With UserForm1 t = Array(.txt1, .txt2, .txt3, .txt4, txt5) For Each c In t s = s + Val(c.Value) Next .txtkei.Value = s End With End Sub (初心者) ---- 結局チェックボックスは単体で制御するのね(笑 (稲葉) ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/201309/20130903152747.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97038 documents and 608037 words.

訪問者:カウンタValid HTML 4.01 Transitional