返回列表 上一主題 發帖

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

回復 33# GBKEE


    回版大
    是對應到此字串沒錯
    是以工作表2資料去對應字串的"Package" 與 "BodySize"的內容作排列(數量由大致小)呈現在ListBox上
    工作表1為理想圖   應為
    是我表達不清抱歉...
    若以第一欄來說  會對應到的篩選條件就是BGA  再來是17.3*7  篩完後再排列數量大小(以工作表2去做篩選)
        以第2攔來說  會對應到的篩選條件就是TQFP 再來是10*10 篩完後再排列數量大小
   
     圈起部分是   上面完成結果後呈現在ListBox上   點選其中某項  會直接把 這4筆資料直接貼上  (每次只貼一次)
     但因為每個機台編號第一欄資料都不同  所以才想過要以先點選儲存格再去尋找字串的方法去做排列...(我的想法)
     重新附上整理後的檔案....不好意思讓您混淆了
      0925.zip (551.96 KB)

TOP

回復 33# GBKEE

    不好意思版大
    此版較明確   
    0926TR.rar (544.82 KB)

TOP

回復 33# GBKEE


    回版大
    這些做法都是我用C#所學的觀念去弄得 所以在相容性下很多問題所以我才越寫越崩潰=  ="
    我最終目標是用"工作表2"的資料對到"TR產出"的機台邊碼上每第一列資料,去做"Package ""Bodysize"數量由大至小,可以秀出在清單方塊上
      
     點選其一內容可以貼到篩選條件的下一排,
      
     顯示在ListBox上會有8筆資料貼上只需其中四筆
      ps:有想過很多方法去做, 可是都卡到每一個機台編號對應的第一排篩選東西可能不同,所以才用陣列去試試看
          但爬文中又有看到物件類別模組好像能實現,只是好像似乎變成要每個機台編號都設置按鈕
           版大有較好的想法或作法嗎~"~

TOP

回復 37# GBKEE


    回版大篩的確實是我要的結果,
    是希望透過人工去LISTBOX點選的方法去貼在第2格
    ( 會有 customer   package  bodysize  lc  bk  vm  tr   數量   ) <-8 筆資料
     因為是我人工去選出來的所以我只有秀大概五筆
   
     因為每次使用時 每個機台編號  只會取其中一項貼上去而已像我這樣
      10.png
     因為使用時不一定會要第一筆資料,要以人工去判斷  lc  bk  vm  tr   的數量   
     再以人工決定要點選一項貼上去
     所以我才會有後者所說是否要很多個按鈕的問題QQ
     又讓版大誤會我一點意思了...

TOP

回復 39# GBKEE


   
    版大可以放檔案上來嗎
    我怎麼輸入程式碼進去都沒有反應
     按F5一直跑錯誤耶= = "

TOP

回復 41# GBKEE


    可以了!!!!G大真是學海無崖....這些東西我找了好幾個禮拜都無從下手....
    這個方法我完全沒想到過...
    只是ListBox裡的資料前面篩選完後 要怎麼把剩下的資料(工作表2)放在後面呢(反百的部分可以只能反白一筆 ,不要這麼多筆嗎)
    因為下面那個ListBox2我要做未加總前的資料(要從WIP去找)可能會用到上面ListBox反白後就可以直接顯示在下面ListBox
    工作表2的東西是我從WIP那邊寫過來的
    ListBox2的資料要對應ListBox1反白後Customer  .  Package  .BodySize .  LC  (從WIP去找這4個相同的)
    然後呈現"Customer"  ."Location"   ."Device Type"   ."Package".   "BodySize".   "LC".   "QTY"  ."T/Y"  ."Schedule"  .  "Oven OutTime"
    這算是最終目的了

TOP

回復 43# GBKEE


回版大
出現偵錯錯誤...


1.  第一個ListBox應該是列出相近的後,剩餘的資料再以工作表2"數量"大小顯示


2.第二個ListBox呈現方法是,點其中一項,會出現從"WIP"資料裡的抓出紅筆圈選對應相同的資料
ListBox2  會像以下圖示(會抓取WIP資料   10個欄位的資料)

TOP

本帖最後由 starbox520 於 2016-10-26 20:51 編輯

回復 45# GBKEE
  1. Option Explicit
  2. Private Sub UserForm_Initialize()
  3.     StartupPosition = 0
  4.     Top = 0
  5.     Left = Windows(1).Width - Width
  6.     lstSelector_設定
  7. End Sub
  8. Private Sub lstSelector_設定()
  9. With lstSelector
  10.         '**反百的部分可以只能反白一筆 ,不要這麼多筆嗎
  11.       ' **取消     .MultiSelect = 1            *** MultiSelect 屬性  指定物件是否接受多重選取。
  12.        If Not IsEmpty(Sheets("TR排機&產出").Sh_Ar) Then .List = Sheets("TR排機&產出").Sh_Ar
  13.     End With
  14.     With ListBox1  '**frmSelector中的第二個ListBox 控制項
  15.         .ColumnCount = 9
  16.         .ColumnWidths = "60,35,75,40,30,60,30,70,30"
  17.     End With
  18. End Sub
  19. Private Sub lstSelector_Change()
  20.     If lstSelector.ListIndex > -1 Then Ex_WIP
  21. End Sub
  22. Private Sub Ex_WIP()
  23.     Dim i As Integer, Ar, A(1 To 4), Ab(), ii As Integer
  24.        With Me.lstSelector
  25.             For i = 0 To 3
  26.                 A(i + 1) = .List(.ListIndex, i)
  27.             Next
  28.        End With
  29.        i = 2
  30.     With Sheets("WIP")
  31.         Do While .Cells(i, 1) <> ""
  32.             If .Cells(i, "A") = A(1) And .Cells(i, "E") = A(2) And .Cells(i, "G") = A(3) And .Cells(i, "F") = A(4) Then
  33.                 If IsEmpty(Ar) Then ReDim Ar(1 To 1) Else ReDim Preserve Ar(1 To UBound(Ar) + 1)
  34.                 ReDim Ab(1 To 1, 1 To 9)
  35.                 For ii = 1 To 8
  36.                    Ab(1, ii) = .Cells(i, ii + 1) ' 8欄資料: B欄- I欄
  37.                Next
  38.                Ab(1, 9) = .Cells(i, "K") 'K欄
  39.                Ar(UBound(Ar)) = Ab
  40.                  '** Listbox 最多顯示 9列
  41.             End If
  42.             i = i + 1
  43.         Loop
  44.     End With
  45. With ListBox1
  46.         .Clear
  47.         If UBound(Ar) > 1 Then
  48.              .List = Application.Transpose(Application.Transpose(Ar))
  49.         ElseIf UBound(Ar) = 1 Then
  50.             .List = Ar(1)
  51.         End If
  52.     End With
  53.     '***********************************
  54. End Sub
  55. Private Sub CommandButton1_Click()
  56.     Dim AA, i As Integer, ii As Integer
  57.     With lstSelector
  58.         For i = 0 To .ListCount - 1
  59.             If .Selected(i) Then
  60.                 If IsEmpty(AA) Then ReDim AA(1 To 4, 1 To 1) Else ReDim Preserve AA(1 To 4, 1 To UBound(AA, 2) + 1)
  61.                 For ii = 1 To 4
  62.                     AA(ii, UBound(AA, 2)) = .List(i, ii - 1)
  63.                 Next
  64.             End If
  65.         Next
  66.     End With
  67.     If IsEmpty(AA) Then
  68.         MsgBox "你沒有選取資料"
  69.     ElseIf UBound(AA, 2) > 4 Then
  70.         MsgBox "你選取 超過 4 筆 資料"
  71.     Else
  72.         If MsgBox("共 選取 " & UBound(AA, 2) & " 筆資料" & vbLf & "確定輸入", vbYesNo) = vbYes Then
  73.             With Sheets("TR排機&產出").Sh_Rng.Offset(1)
  74.                 .Resize(4, 4) = ""
  75.                 .Resize(UBound(AA, 2), UBound(AA)) = Application.Transpose(AA)
  76.             End With
  77.         End If
  78.     End If
  79. End Sub
複製代碼
哪裡錯了呢= =他一直說型態不符... 我是2010的應該跟2003相通呀....
一直顯示Ar的參數型態有問題

第一個ListBox應該是列出相近的後,剩餘的資料再以工作表2"數量"大小顯示
這個可以列入嗎

TOP

回復 48# c_c_lai


    回CC大
    修改後問題還是存在...
    TTR001.rar (566.99 KB)

TOP

回復 49# GBKEE


   1 回版大
    一開始的是對的  
    您修改後的反而不對了~
   
     此圖的意思是,EX:上面的前五項資料 就是符合 "TR排機&產出" 第一行的資訊所篩選出來的
     相對的這些資料是從工作表2篩出來的,下面的資訊是工作表2排除那5筆剩下的資料,工作表2的數量已經從大至小排好了
     就由數量大到小呈現就可以了
   

   
   
    這張圖是版大地2個ListBox ,確實是要呈現這樣的資訊
    只是好像少了幾項內容
   
    會有這10攔的內容

    因為我目前還卡在型態偵測錯誤這階段
    所以我也看不出版大地2個ListBox呈現的資料是不是這些...
   
    PS:   第一個ListBox的這兩筆資訊可以對調位置嗎,貼上去的部分也剛好顛倒了
   


    TR00.rar (569.88 KB)

TOP

        靜思自在 : 【做人的開始】每一天都是故人的開始,每一個時刻都是自己的警惕。
返回列表 上一主題