返回列表 上一主題 發帖

[發問] 執行階段錯誤'380'

本帖最後由 wang077 於 2021-7-29 16:35 編輯

回復 11# samwang
大大,如果我D欄只要入庫、良品、良率呢,且D欄可重複顯示

TOP

回復 12# singo1232001
非常感謝大大
我會去研究看看的!

TOP

本帖最後由 singo1232001 於 2021-7-29 15:34 編輯

回復 7# wang077


若想找資料架構的學習教材相關
請上網查詢 "資料庫正規化" "資料庫范式" 或者"資料庫架構" 與 "關聯式資料庫"

test (4).zip (60.28 KB)

TOP

本帖最後由 samwang 於 2021-7-29 15:12 編輯

回復 8# wang077

請測試看看,謝謝

Private Sub CommandButton3_Click()
Dim Arr, Ar(), xD, i&, j&
Set xD = CreateObject("Scripting.Dictionary")
b = ComboBox1.Text
Sheets(b).Select
If Me.ComboBox2.Text <> "" And Me.ComboBox3.Text = "" Then
    Arr = Sheets(b).AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible)
    ReDim Ar(1 To UBound(Arr) + 1, 1 To UBound(Arr, 2))
    For j = 1 To UBound(Arr, 2)
        If j > 4 And j < 36 Then GoTo 99
        For i = 1 To UBound(Arr)
            If Arr(i, j) <> "" Then
                If xD(Arr(i, j)) <> 1 Then
                    xD(Arr(i, j)) = 1
                    If j <> j1 Then j1 = j: n = n + 1
                    If Ar(1, n) = "" Then Ar(1, n) = Cells(2, j)
                    If j = 36 And i = UBound(Arr) Then
                        Ar(i + 1, n) = Format(Arr(i, j), "0%")
                    Else
                        Ar(i + 1, n) = Arr(i, j)
                    End If
                End If
            End If
        Next
99: Next
    With Me.ListBox1
      .List = Ar
      .ColumnCount = n
    End With
End If
Sheets(b).Select
End Sub

1.PNG (64.46 KB)

1.PNG

TOP

回復 9# Andy2483
這也太強大,要理解程式碼虛要一點時間了
也謝謝大大提供方法參考

TOP

回復 1# wang077


    經驗分享:資料改為直式的好處,以樓主範例為例
1.日期可以持續擴充
2.欄位可以局部擴充
3.可以計算多種良率
  3.1.個別良率
  3.2.機台合計良率
  3.3.料號合計良率
  3.4.日期合計良率
  3.5.全部產品良率
  3.6.其他想要計算的良率
4.容易查詢歷史資料

以上參考!

入出庫管理-8.zip (57.63 KB)

用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 6# samwang
測試過了,沒問題
如果listbox只要顯示A、B、C、D、AJ欄,且A、B、C欄不重複顯示呢?
還有AJ欄的良率,listbox上有辦法顯示xx.x%嗎
test.zip (29.21 KB)

TOP

回復 5# singo1232001
如果是把篩選的結果複製到新的工作表呢?
這樣會比較好處理嗎?
大大,我用你的檔案下去測試,listbox上良品的數值顯示好像錯誤了
好像也會抓到報廢那行

TOP

本帖最後由 samwang 於 2021-7-29 13:04 編輯

回復 1# wang077

是這樣嗎? 請測試看看,謝謝
Private Sub ComboBox2_Change()
Range("$A$2:$AJ$65536").AutoFilter Field:=1, Criteria1:=ComboBox2.Text
End Sub

Private Sub CommandButton3_Click()
Dim Arr, Ar(), i&, j&
b = ComboBox1.Text
Sheets(b).Select
If Me.ComboBox2.Text <> "" And Me.ComboBox3.Text = "" Then
    Arr = Sheets(b).AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible)
    ReDim Ar(1 To UBound(Arr) + 1, 1 To UBound(Arr, 2))
    For j = 1 To UBound(Arr, 2)
        For i = 1 To UBound(Arr)
            If Arr(i, j) <> "" Then
            If j <> j1 Then j1 = j: n = n + 1
            If Ar(1, n) = "" Then Ar(1, n) = Cells(2, j)
            Ar(i + 1, n) = Arr(i, j)
            End If
        Next
    Next
    With Me.ListBox1
      .List = Ar
      .ColumnCount = n
    End With
End If
Sheets(b).Select
End Sub

TOP

本帖最後由 singo1232001 於 2021-7-29 13:00 編輯

回復 4# wang077

http://forum.twbts.com/thread-23251-1-2.html
之前的規則 主要我整理了兩種匯入方式
這次你的問題 剛好在我沒寫到的範圍外 當時也沒問題就沒花時間深入摸索

目前你所使用的是屬於additem的"陣列一次匯入"方式
(雖然沒出現additem)
但直接用陣列匯入 也算此類

原因在於個別 additem 無法超過10欄位
只能靠陣列匯入 才能超過10欄位

這種邊篩選又篩選的呈現方式 其實要好好考慮有無其必要
此方式後期大方向會非常複雜

建議用以下三種方式
1.改用第一種推薦的方式 用新增暫存表當作篩選區
2.不要在工作表處理篩選問題 只要用上userform1篩選
3.就只用工作表處理篩選問題 不要用上 userform1

test v1.zip (25.45 KB)

TOP

        靜思自在 : 【行善要及時】行善要及時,功德要持續。如燒開水一般,未燒開之前千萬不要停熄火候,否則重來就太費事了。
返回列表 上一主題