返回列表 上一主題 發帖

[發問] ListBox與排序加總問題

回復 19# starbox520


    回大大有辦法把您做的結果顯示在清單方塊做動作嗎
    不好意思問題有點多 == ""
    檔案內有細項說明><
  
   Xl000088.rar (96.48 KB)

TOP

回復 18# 准提部林


   
    回大大有辦法把您做的結果顯示在清單方塊做動作嗎
    不好意思問題有點多 == ""
    檔案內有細項說明><

Xl000088.rar (96.48 KB)

TOP

回復 22# Hsieh


回大大  因為之後可能還會再加入資料
如果要用樞紐的話
怕後面每增加一次資料就要重新選取範圍
所以才想說用vba去執行^^

TOP

本帖最後由 starbox520 於 2016-10-13 15:29 編輯

回復 24# 准提部林
不好意思我補充說明

第一個清單方塊要跑出的

是 CR. PG. BE. LC 資料相同的話

去做 BK.VM.TR.數量 加總

如下圖  這種格式(之前有請大大您教過我的)


第二個清單方塊為我點選第一個清單方塊的內容其中一項時


會跑出資料還未加總前的型態


表二的紅色區塊是想要把我在清單方塊的資料

貼到紅色區塊裡(只是我要秀在清單方塊上可以方便我去做貼上或者跑出第2個清單的機制)

TOP

回復 24# 准提部林

sorry忘了附檔給您

xl000099.zip (87.29 KB)

TOP

[發問] ListBox與排序加總問題

1.工作表2為從WIP抓過來做排序計算的資料

不過在數量這部分不知道是我哪段有問題(要做BK+VM+TR的相加)

2.想在表格"產出"  做出ListBox(還是有其他方法呢)

此ListBox可以列出我現在所選的編號那欄對應的第一排

從"工作表2"的資料列出先與"Package"相同的次要是"BodySize"列出 然後"數量"由大至小

可以貼在"產出"紅色的儲存格,每一個編號都對應到同一欄

在點擊選出的內容可以秀出此筆資料相加前的內容


TTR1表.rar (576.39 KB)

'排列
Sub ArrangeMent()

Dim Arr, Brr, xD, Dn&, T$, N&, i&, j%
Arr = Range([WIP!A1], [WIP!A1].Cells(Rows.Count, 1).End(xlUp)(1, 12))
Set xD = CreateObject("Scripting.Dictionary")
ReDim Brr(1 To UBound(Arr), 1 To 8)
   For i = 2 To UBound(Arr)
   T = Arr(i, 1) & "|" & Arr(i, 5) & "|" & Arr(i, 6) & "|" & Arr(i, 7)
   Dn = xD(T)
   If Dn = 0 Then
      N = N + 1: Dn = N: xD(T) = N
      For j = 1 To 4: Brr(Dn, j) = Arr(i, Array(1, 5, 6, 7)(j - 1)): Next
   End If
    j = Int(InStr("----BK-VM-TR-", "-" & Split(Arr(i, 3), "_")(1) & "-") / 3)
     If j > 0 Then
      Brr(Dn, j + 4) = Brr(Dn, j + 4) + Arr(i, 11)
       Brr(Dn, 8) = Brr(Dn, 8) + Arr(i, 11)
     End If
Next i
If N = 0 Then Exit Sub
    With Sheets("工作表2")
   .[A2].Resize(N, 8) = Brr
     Application.Goto .[A1]
End With
End Sub

加上資料加總問題  以做排序出來了

只是想在做表單

做貼上的效果
Private Sub CommandButton1_Click()

    Dim AA(), xi As Integer
    With frmSelector
        For xi = 0 To .ListCount - 1
            '  判斷列表框 (ListBox1) 是否有被點選
            If .Selected(xi) = True Then
                '  取出該行之數據,存入 AA 陣列中
                AA = Application.Index(frmSelector.List, xi + 1)
                 'With Sheets("sheet3").Range("A" & Rows.Count).Offset(1)  '.Offset(1)  '**還是下一儲存格
                 With Sheets("sheet1").Range("A" & Rows.Count).End(xlUp).Offset(1)  '.Offset(1)  '**還是下一儲存格
                    .Cells = .Cells + AA
                    '還是 .Cells = .Cells + AA '資料是累積的
                End With
            End If
        Next
    End With

End Sub

只是試了很久都沒有反應 ...
0992.rar (487.86 KB)

TOP

回復 29# GBKEE


    原來是我修改錯地方..
    可以再問一下  
    因為我想用工作表2的資料去對應到"TR排機&產出"
    每一機台編號的第一排都有資料
    用"工作表2"的資料對應到上方每一個篩好的資料再作排序(Package.BodySize.LC.數量由大至小)再把處理好的資料用ListBox顯示出來
    我知道可以用多重篩選去執行...
    但今天如果上方篩好的資料跟之前的不一樣(Ex:機台編號第2個)
    以小弟功力又在此卡住了.....
    有什麼辦法可以偵測我現在選的那一欄位的機台編號可以對應到他第一排資訊去做排列呢...
   
    T0923.zip (911.74 KB)

TOP

本帖最後由 starbox520 於 2016-10-21 13:49 編輯

回復 29# GBKEE


    附檔的按我 就是我想要做的問題改善
    原本是設計來開啟listBox單純此功能而已(目前ListBox的資料顯示是取用於"工作表2")
    現在要修正為如果先點機台編號在按此按鈕開啟ListBox(或是有更好的方法...)
    能否自動對應到選擇的機台編號右手邊的第一排資料
    跑出來的樣子會類似像"工作表1"左上圖示 以對應字串顯示出的排序

TOP

我有試著自己去用矩陣方式寫入清單方塊
   可以幫我看看哪邊語法有錯誤的嗎
   Private Sub TrLowData(ByVal strPackage As String, ByVal strLC As String, ByVal strBodysize As String)
    Dim max As Integer
    max = UBound(List)
    Dim gg As Boolean
    Dim LowCustomer As String
    Dim BodySize As String
    Dim Location As String
    Dim DeviceType As String
    Dim Package As String
    Dim Schedule As String
    Dim BK As Long
    Dim LC As String
    Dim TY As String
    Dim VM As Long
    Dim TR As Long
    Dim Total  As Long
            '用工作表2去做排列 一行一行讀
    For k = 2 To 6000
        Customer = Cells(k, "A")
        Package = Cells(k, "B")
        BodySize = Cells(k, "C")
        LC = Cells(k, "D")
        BK = Cells(k, "E")
        VM = Cells(k, "F")
        TR = Cells(k, "G")
        Total = Cells(k, "H")
            If Len(Customer) = 0 Then
                Exit For
            End If
     '比對字串作排列  以PKG.LEADCOUNT.BodySize作條件篩選
     
     Next
      If (StrComp(List(i).PKG, strPackage, vbTextCompare) = 0) And _
         (StrComp(List(i).LEADCOUNT, strLC, vbTextCompare) = 0) And _
         (StrComp(List(i).BodySize, strBodysize, vbTextCompare) = 0) Then
      For i = 0 To max
     '把結果放去LISTBOX 只秀出五筆
      lstSelector.ColumnCount = 9
         For i = 1 To 5
         lstSelector.Additm
        Next i
       '這裡要keep這五個資料但是我不曉得要怎麼用語法去寫...
      
      '在秀出五筆以LEADCOUNT.PKG 作排列
       If (StrComp(List(i).LEADCOUNT, strLC, vbTextCompare) = 0) And _
          (StrComp(List(i).PKG, strPackage, vbTextCompare) = 0) And _
           For i = 0 To max
            lstSelector.ColumnCount = 9
         For i = 1 To 5
         lstSelector.Additm
        Next i

End Sub

TR0924.rar (546.35 KB)

TOP

        靜思自在 : 有心就有福,有願就有力,自造福田,自得福緣。
返回列表 上一主題