Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


24177 / 76738 ←次へ | 前へ→

【57912】Re:テキストボックスに条件分岐で検索値を表示
発言  kanabun  - 08/9/20(土) 0:50 -

引用なし
パスワード
   >> 問題は、単価です。
>
>> 6.単価(テキストボックス。3.の受注数に対して
>> それぞれの単価が製品登録のシートに登録されている)

>> 教えていただきたいのは、単価の箇所に3.の受注数を選択すると
>> 自動的に単価表示ができるようにしたいのです。

>ComboBox2 に製品名を AddItemするとき、同じ行の87,89,91列目
>もリストに (Column2,3,4に)転記しておけば、
>さらに、単価も 5,6,7列目に 転記しておけば、
>話が早いと思います。

この案によるサンプルコードです。

>ロット数は 87,89,91列目にデータがあるわけですよね?
>
>A列   C列     CI列    CM列    CK列  
>得意先  製品    ロット1  ロット2  ロット3
>

>問題の「単価」は何列目に記入されているのですか?

この質問に対するご回答がいただけてないので、
88,90,92列に 左隣のロット数に対応する「単価」が書き込まれてるものと
仮定しました。

'【Dictionary】にA列の受注先名を格納 案
'【ComboBox2】に 製品名 ロット数1,2,3 単価 1,2,3 をリスト

'--------------------------------
Option Explicit
Private dic As Object

Private Sub UserForm_Initialize()
  Dim i As Long, ss As String
  
  '(1)ComboBox1に得意先をリスト
  ' 省略
  ComboBox1.List =           '得意先リスト
  
  '(2)ComboBox2用 得意先別 製品行を Dictionaryに登録
  Set dic = CreateObject("Scripting.Dictionary")
  With Worksheets("製品登録")
    For i = 5 To .Range("A65536").End(xlUp).Row
      ss = .Cells(i, 1).Value
      dic(ss) = dic(ss) & "," & i '得意先別 行番号
    Next
  End With
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  If Not dic Is Nothing Then Set dic = Nothing
End Sub

'▼リストから得意先が選択されたら 対応する製品名をComboBox2にセット
Private Sub ComboBox1_Change()
  Dim i As Long, j As Long, k As Long
  Dim str得意先 As String
  Dim v
  
  str得意先 = ComboBox1.Value
  v = Split(dic(str得意先), ",") '選択得意先 の製品別行番号の _
                 配列をDictionaryのItemから取得
  ComboBox2.Clear
  With Worksheets("製品登録")
    For k = 1 To UBound(v)
      i = v(k)               '行番号
      ComboBox2.AddItem .Cells(i, 3).Value 'C列 製品名
      For j = 1 To 6  '受注数(87,89,91)または単価(88,90,92)
        ComboBox2.List(k - 1, j) = .Cells(i, 86 + j).Value
      Next
    Next
  End With
End Sub

'▼ ComboBox2リストから製品名が選択されたら ロット(受注)数と単価を _
  ComboBox3 にセット
Private Sub ComboBox2_Change()
 Dim i As Long, j As Long, Index As Long, lot As Long
 
 Index = ComboBox2.ListIndex
 With ComboBox3
   .Clear
   i = -1
   For j = 1 To 6 Step 2
     lot = Val(ComboBox2.List(Index, j))
     If lot > 0 Then
       i = i + 1
       .AddItem lot 'ロット(受注)数
       .List(i, 1) = ComboBox2.List(Index, j + 1)
     End If
   Next
   .ListIndex = i
 End With
End Sub

'▼ロットが一つ選択されたら、対応する単価をTextBoxに表示
Private Sub ComboBox3_Change()
 With ComboBox3
   If .ListIndex > -1 Then
     txt単価.Text = .List(.ListIndex, 1)
   End If
 End With
End Sub
0 hits

【57882】テキストボックスに条件分岐で検索値を表示 takeshi 08/9/18(木) 22:33 質問
【57883】Re:テキストボックスに条件分岐で検索値を... neptune 08/9/18(木) 22:46 発言
【57884】Re:テキストボックスに条件分岐で検索値を... takeshi 08/9/18(木) 23:17 発言
【57904】Re:テキストボックスに条件分岐で検索値を... neptune 08/9/19(金) 17:23 回答
【57906】Re:テキストボックスに条件分岐で検索値を... kanabun 08/9/19(金) 19:43 発言
【57908】Re:テキストボックスに条件分岐で検索値を... neptune 08/9/19(金) 21:52 発言
【57915】Re:テキストボックスに条件分岐で検索値を... takeshi 08/9/20(土) 12:58 お礼
【57889】Re:テキストボックスに条件分岐で検索値を... kanabun 08/9/19(金) 10:18 発言
【57912】Re:テキストボックスに条件分岐で検索値を... kanabun 08/9/20(土) 0:50 発言
【57918】Re:テキストボックスに条件分岐で検索値を... takeshi 08/9/21(日) 1:34 お礼
【57923】Re:テキストボックスに条件分岐で検索値を... kanabun 08/9/21(日) 9:34 発言
【57927】Re:テキストボックスに条件分岐で検索値を... takeshi 08/9/21(日) 19:31 お礼
【57914】Re:テキストボックスに条件分岐で検索値を... takeshi 08/9/20(土) 12:49 回答

24177 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free