返回列表 上一主題 發帖

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

本帖最後由 c_c_lai 於 2016-10-27 09:56 編輯

回復 46# starbox520
一般在使用 Sheets("WIP").Cells(i, "F")  時,我們均確信
Sheets("WIP").Cells(i, "F") 會傳回值 950 (舉例假設),同時
A(4) 值亦是  950 (舉例假設)。
經觀察 Sheets("WIP") 的 F 欄內存放值均為 數值型態 (Double),
當你將兩者做對等的比對時便會產生不等值,便視為 "兩者" 間條件不符合 (不成立)
(一個為字串型態、另一個為雙精準 [比對時它不會自動轉換為字串型態]) 而跳過不處理。
結果,接下來當你欲將前面經 "比對運作" 產生的 Ar 變數拿來運用時,
因之前所有比對均無一條件成立,Ar 內容值當然為空值 (Empty),
是故當拿它要 Assign 值給 .List 時,便產生了你看到的畫面結局了。
  1. 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
複製代碼
修改成
  1. If .Cells(i, "A") = A(1) And .Cells(i, "E") = A(2) And .Cells(i, "G") = A(3) And CStr(.Cells(i, "F")) = A(4) Then
複製代碼
便 OK 了。

TOP

本帖最後由 c_c_lai 於 2016-10-29 09:10 編輯

回復 57# starbox520
參照
"輸入資料比對資料表 轉換到別的資料表 #12"
的修正。
  1.     '******   By GBKEE  ******
  2.     '**frmSelector中的第二個ListBox 控制項
  3.     With ListBox1
  4.         .Clear
  5.         If UBound(Ar) > 1 Then
  6.              .List = Application.Transpose(Application.Transpose(Ar))
  7.         ElseIf UBound(Ar) = 1 Then
  8.             .AddItem
  9.             For i = 0 To UBound(Ar(1))
  10.                 .List(0, i) = Ar(1)(i)
  11.             Next i
  12.         End If
  13.     End With
  14.     '***********************************
複製代碼

TOP

本帖最後由 c_c_lai 於 2016-10-29 16:39 編輯

回復 60# starbox520
  1. Private Sub lstSelector_設定()
  2.     Dim i As Integer, Arr()
  3.    
  4.     With lstSelector             '  ** frmSelector 中的 第一個 ListBox 控制項
  5.         .Clear
  6.         i = 0
  7.         '**反百的部分可以只能反白一筆 ,不要這麼多筆嗎
  8.         ' **取消     .MultiSelect = 1            *** MultiSelect 屬性  指定物件是否接受多重選取。
  9.         Arr = Sheets("TR排機&產出").Sh_Ar
  10.         If Not IsEmpty(Arr) Then
  11.             On Error Resume Next
  12.             i = UBound(Arr, 2)
  13.             If i > 0 Then
  14.                 .List = Arr
  15.             Else
  16.                 .AddItem
  17.                 For i = 0 To UBound(Arr)
  18.                     .List(0, i) = Arr(i + 1)
  19.                 Next i
  20.             End If
  21.         End If
  22.     End With
  23.     With ListBox1                '  ** frmSelector 中的 第二個 ListBox 控制項
  24.           .ColumnCount = 9
  25.           .ColumnWidths = "90,45,130,60,35,50,90,50,70"
  26.    End With
  27. End Sub
複製代碼

TOP

回復 62# starbox520

TOP

回復 70# starbox520
工作表單 "TR排機&產出":
Worksheet_SelectionChange() 以及
Ex_Customer_Package() 內改成備註
之處改回原來。

TOP

本帖最後由 c_c_lai 於 2016-11-4 07:25 編輯

回復 72# starbox520
看了 #68 的說明,以及 #69 GBKEE 大大的回復,才知問題出在:
  1. Worksheet_SelectionChange():
  2.     If (Target(1).Row + 1) Mod 5 = 0 And Target(1) <> "" And Target(1).Column = 6 Then
  3.     (依照 GBKEE 大大 的修正指示)
複製代碼
  1. Ex_Customer_Package():
  2.     If .Cells(i, 2) = Sh_Rng And .Cells(i, 3) = Sh_Rng(1, 2) Then
  3.     (修改成)
  4.     If .Cells(i, 2) = Sh_Rng(1, 2) And .Cells(i, 3) = Sh_Rng(1, 3) Then
複製代碼
執行起來,一切看似 OK。
   
接下來的執行,便又變回原樣了:

請參考之前的提示 (#63) 予以更新。

TOP

回復 76# starbox520
  1.             With Sheets("TR排機&產出").Sh_Rng.Offset(1)
複製代碼
改成
  1.             With Sheets("TR排機&產出").Sh_Rng.Offset(1, -1)
複製代碼

TOP

        靜思自在 : 【時日莫空過】一個人在世間做了多少事,就等於壽命有多長。因此必須與時間競爭,切莫使時日空過。
返回列表 上一主題