[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『同じ値のコンボボックス→計算』(りんご)
Gr.1 ComboBox1 → りんご TextBox1 → 200
Gr.2 ComboBox2 → みかん TextBox2 → 150
Gr.3 ComboBox3 → りんご TextBox3 → 500
ユーザーフォームに上記を配置して、それぞれに値が入っています。 ComboBox 同一値のみの、TextBoxの合計値を出したいです。
「りんご」の合計「700」 「みかん」の合計「150」
よろしくお願い致します。
< 使用 Excel:Excel2013、使用 OS:Windows8 >
Dim dic, k, i As Integer Set dic = CreateObject("scripting.dictionary") On Error Resume Next For i = 0 To 2 dic(Array(ComboBox1, ComboBox2, ComboBox3)(i).Text) = dic(Array(ComboBox1, ComboBox2, ComboBox3)(i).Text) * 1 + val(Array(TextBox1, TextBox2, TextBox3)(i)) Next i For Each k In dic.keys If Not k = Empty Then MsgBox k & "の合計" & dic(k) * 1 Next k End Sub (mm) 2016/07/25(月) 16:37
一例です
Private Sub CommandButton1_Click() Dim i As Long Dim k As String Dim dic As Object Dim msg As Object
Set dic = CreateObject("Scripting.Dictionary") Set msg = CreateObject("Scripting.Dictionary")
For i = 1 To 3 k = Me.Controls("ComboBox" & i).Value dic(k) = dic(k) + Val(Me.Controls("TextBox" & i).Value) msg(k) = k & ":" & dic(k) Next
MsgBox Join(msg.items, vbLf)
Set dic = Nothing Set msg = Nothing
End Sub
(β) 2016/07/25(月) 17:06
mm様・β様 ありがとうございます。
すみません。MsgBoxに表示させる方法ではなく、 「りんご」の場合 → TextBox3に合計値を表示 「みかん」の場合 → TextBox4に合計値を表示
だとどのようになりますか?
りんご (りんご) 2016/07/25(月) 17:14
>>「りんご」の場合 → TextBox3に合計値を表示
TextBox3 は、明細行で、すでに値が入っているので、これは TextBox4 ですかね?
もし、「バナナ」だったら、どこに表示するのですか?
(β) 2016/07/25(月) 17:25
β様
失礼しました。TextBox4です。
ComboBox1〜3全てに、「りんご」「みかん」「バナナ」3つのリストセット。 それぞれの金額をTextBox1〜3に入力。
TextBox4〜6を配置。 CommandButton1_Clickで、 「りんご」の場合 → TextBox4に合計値を表示 「みかん」の場合 → TextBox5に合計値を表示 「バナナ」の場合 → TextBox6に合計値を表示 というイメージです。 (りんご) 2016/07/25(月) 17:34
各ComboBoxのリストがRowSourceで与えられているか、Listに対するセット(AddItem等) なのかは別にして TextBox4,5,6に そのリストに格納されている順番で合計値を転記します。
最初のほうの 変数 w への格納は、どちらかで行ってください。
Private Sub CommandButton1_Click() Dim w As Variant Dim i As Long Dim x As Long Dim k As String Dim d As String Dim v(1 To 3) As Variant Dim z As Variant
w = Evaluate(ComboBox1.RowSource).Value 'RowSourceの場合 ' w = ComboBox1.List 'List使用の場合
For i = 1 To 3 k = Me.Controls("ComboBox" & i).Value If k <> "" Then z = Application.Match(k, w, 0) If IsNumeric(z) Then If z <= UBound(v) Then v(z) = v(z) + Val(Me.Controls("TextBox" & i).Value) End If End If End If Next
For i = 4 To 6 Me.Controls("TextBox" & i).Value = v(i - 3) Next
End Sub
(β) 2016/07/25(月) 19:10
↑ もし、わかりにくければ
Private Sub CommandButton1_Click() Dim ans4 As Variant Dim ans5 As Variant Dim ans6 As Variant Dim i As Long Dim k As String Dim d As Long
For i = 1 To 3 k = Me.Controls("ComboBox" & i).Value d = Val(Me.Controls("TextBox" & i).Value) Select Case k Case "りんご": ans4 = ans4 + d Case "みかん": ans5 = ans5 + d Case "バナナ": ans6 = ans6 + d End Select Next
TextBox4.Value = ans4 TextBox5.Value = ans5 TextBox6.Value = ans6
End Sub
(β) 2016/07/25(月) 19:26
β様
ご連絡が遅くなってしまい申し訳ございません。 教えて頂いた方法で解決しました! 本当にありがとうございました (りんご) 2016/07/29(金) 16:37
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.