advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 8928 for リスト (0.007 sec.)
[[20180412165944]]
#score: 2746
@digest: fe5630f829e17fa84a0e7f6b6dd89864
@id: 76095
@mdate: 2018-04-16T00:35:56Z
@size: 7557
@type: text/plain
#keywords: 価リ (96397), 刷代 (43904), label15 (41156), ラ— (30483), 送代 (27823), label13 (26707), 額: (20632), textbox6 (19116), 郵送 (18205), 価: (17737), 片面 (16124), ス6 (15889), 両面 (15758), 件リ (15271), combobox2 (12965), トm (12197), textbox7 (9990), ノク (9506), 円" (8941), 単価 (8304), textbox9 (8083), 代、 (7517), enabled (7043), afterupdate (5710), セレ (5091), caption (5068), ボボ (4723), ト") (4437), combobox1 (4412), 物件 (4294), モノ (3771), ジ数 (3460)
『コンボボックスの選択によってテキストボックスを制御したい』(まーこ)
初めて質問します。過去ログでいつも勉強させていただいておりますが、今回は過去ログでもわからなかったので質問させていただくことにいたしました。 よろしくお願いします。 印刷費や郵送費を請求するための請求リストを作成するフォームを作成し、 やりたいことはできているのですが、入力作業を別の担当にさせるために 制御をかける方法を知りたいです。 やりたいことは2点です 郵送代、印刷代が入っている単価リストがあり、 コンボボックス1で郵送代、印刷代の単価リストのタイトルをセレクト出来、 コンボボックス2でその単価リストを選択できるようになっていまして、 選択したものの単価がラベル13とテキストボックス9に入り、 テキストボックス6、7に入れた数字とテキストボックス9の数字を 掛けた数字がラベル15に表示されるようになっています。 1、コンボボックス1で単価リストM列の印刷代を選んだときにだけ テキストボックス6(ページ数)が入力できるように制御をかけたいです。 2、コンボボックス2で単価リストのうち"両面"の文字が入っているものが セレクトされた時、テキストボックス6を「2」以上の数字をいれないと エラーメッセージが出るようにしたいです。 現在の具体的なコードは以下の通りです。 Private Sub ComboBox1_Change() Dim c, r As Long Dim sh As Worksheet Set sh = Sheets("単価リスト") If ComboBox1.ListIndex = 2 Then End If '単価リストの1行目のリストタイトルを選択 '単価リストはJ列に郵送代、K列に単価、L列空白、M列に印刷代、N列に単価…です c = Application.Match(ComboBox1.Value, sh.Range("1:1"), 0) If IsNumeric(c) Then r = sh.Cells(Rows.Count, c).End(xlUp).Row ComboBox2.List = sh.Range(sh.Cells(2, c), sh.Cells(r, c)).Value End If End Sub Private Sub ComboBox2_Change() Dim sh As Worksheet Set sh = Sheets("単価リスト") Label13.Caption = "単価 : " & Application.SumIf(sh.Range("J:V"), ComboBox2.Value, sh.Range("K:W")) TextBox9.Text = Application.SumIf(sh.Range("J:V"), ComboBox2.Value, sh.Range("K:W")) If ComboBox2.ListIndex = 1 Then Label13.Caption = "単価 : " & Application.SumIf(sh.Range("J:V"), ComboBox2.Value, sh.Range("K:W")) End If End Sub Private Sub TextBox6_Change() Dim sh As Worksheet Set sh = Sheets("物件リスト") On Error Resume Next Label15.Caption = "金額: " & Val(TextBox6.Value) * Application.SumIf(sh.Range("J:V"), ComboBox2.Value, sh.Range("K:W")) & " 円" End Sub Private Sub TextBox7_AfterUpdate() Dim sh As Worksheet Set sh = Sheets("物件リスト") On Error Resume Next Label15.Caption = "金額: " & Val(TextBox7.Value) * Application.SumIf(sh.Range("J:V"), ComboBox2.Value, sh.Range("K:W")) & " 円" Label15.Caption = "金額: " & Val(TextBox7.Value) * Val(TextBox9.Value) & " 円" End Sub ちなみに単価リストM列のリストは以下の通りとなっています。 行 2 A4 カラ— 片面 3 A4 カラ— 両面 4 A3 カラ— 片面 5 A3 カラ— 両面 6 A4 モノクロ 片面 7 A3 モノクロ 両面 8 A4 モノクロ 片面 9 A3 モノクロ 両面 お力をお貸しくださいよろしくお願いいたします。 < 使用 Excel:Excel2007、使用 OS:Windows10 > ---- 深く考えていませんし、 何をしようとしているかも理解できていませんが 1,EnabledとかVisileプロパティを使えませんか。 2.テキストボックス6は、コンボボックスにしたら駄目なのですか。 で、必要に応じて、リストをセットし直せばよいのでは。 (マナ) 2018/04/12(木) 20:30 ---- 質問以外の部分で気になったんですが、ご自身は別に平気なのかもしれないけど インデントついてないと見づらいですし、コード提示する(誰かに見てもらうつもり) ならインデント付けたほうがよいように思います。 ---- Private Sub ComboBox1_Change() Dim c, r As Long Dim sh As Worksheet: Set sh = Sheets("単価リスト") If ComboBox1.ListIndex = 2 Then '●記述忘れ?● End If '単価リストの1行目のリストタイトルを選択 '単価リストはJ列に郵送代、K列に単価、L列空白、M列に印刷代、N列に単価…です c = Application.Match(ComboBox1.Value, sh.Range("1:1"), 0) If IsNumeric(c) Then r = sh.Cells(sh.Rows.Count, c).End(xlUp).Row ComboBox2.List = sh.Range(sh.Cells(2, c), sh.Cells(r, c)).Value End If End Sub ---- Private Sub ComboBox2_Change() Dim sh As Worksheet: Set sh = Sheets("単価リスト") Dim buf As Variant buf = Application.SumIf(sh.Range("J:V"), ComboBox2.Value, sh.Range("K:W")) Label13.Caption = "単価 : " & buf TextBox9.Text = buf If ComboBox2.ListIndex = 1 Then Label13.Caption = "単価 : " & buf End If End Sub ---- Private Sub TextBox6_Change() Dim sh As Worksheet: Set sh = Sheets("物件リスト") Dim buf As Variant On Error Resume Next buf = Application.SumIf(sh.Range("J:V"), ComboBox2.Value, sh.Range("K:W")) Label15.Caption = "金額: " & Val(TextBox6.Value) * buf & " 円" End Sub ---- Private Sub TextBox7_AfterUpdate() Dim sh As Worksheet: Set sh = Sheets("物件リスト") Dim buf As Variant On Error Resume Next buf = Application.SumIf(sh.Range("J:V"), ComboBox2.Value, sh.Range("K:W")) Label15.Caption = "金額: " & Val(TextBox7.Value) * buf & " 円" Label15.Caption = "金額: " & Val(TextBox7.Value) * Val(TextBox9.Value) & " 円" End Sub ---- ちなみに、「On Error Resume Next」でエラートラップしてる部分ですけど、せっかく「Application.SumIf」としてエラー値を返せるようにしているので、戻り値がエラーだったらプロシージャを抜けるようにしてみたらどうでしょうか? (もこな2) 2018/04/12(木) 22:42 ---- 自己解決できました。 もこなさん、コードを整理していただきありがとうございました。 マナさん、何をしたいか理解できないような質問で申し訳ありませんでした。 アドバイス通りEnabledプロパティで制御できました。 考えが浅くてすみませんでした。 1、コンボボックス1で単価リストM列の印刷代を選んだときにだけ テキストボックス6(ページ数)が入力できるように制御をかけたい ↓これで制御できました。 ------------------------------------------------------- Private Sub ComboBox1_AfterUpdate() If Me.ComboBox1.Value = "印刷代" Then Me.TextBox6.Enabled = True Else Me.TextBox6.Enabled = False End If End Sub -------------------------------------------------------- 2、コンボボックス2で単価リストのうち"両面"の文字が入っているものが セレクトされた時、テキストボックス6を「2」以上の数字をいれないと エラーメッセージが出るようにしたい コマンドボタンで入力チェックをかける方法としました。 ------------------------------------------------------------ Private Sub CommandButton1_Click() If InStr(ComboBox2.Value, "両面") > 0 Then If TextBox6 = 1 Then MsgBox "2ページ以上を設定してください" Exit Sub End If End If '両面をセレクトしないときも1以上を設定してほしいので、空欄と0にもエラーを出す If TextBox6.Enabled = True Then If TextBox6.Value = "" Then MsgBox ("ページ数を入力してください") TextBox6.SetFocus Exit Sub End If End If If TextBox6.Enabled = True Then If TextBox6.Value = 0 Then MsgBox ("ページ数を入力してください") TextBox6.SetFocus Exit Sub End If End If End Sub ----------------------------------------------------- おそらくもっと簡素にできるのでしょうが、 実力不足のため似たコードを重ねることでしが解消できませんでしたが、 したいことはできるようになりました。 おかげで解決できました ありがとうございました。 ( まーこ) 2018/04/16(月) 09:35 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/201804/20180412165944.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97017 documents and 608140 words.

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