返回列表 上一主題 發帖

請問規則02F - 04F 如果在Data Base 篩選在這個範圍内的相關資料

本帖最後由 Andy2483 於 2025-11-3 14:59 編輯

回復 140# 198188


    範例檔執行沒問題! 用以下條件執行DATA後 在執行 FORM 也沒問題

批次次序        樓層        生產單號
A                   03F-41F        WO-J057-020
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復  198188


    範例檔執行沒問題! 用以下條件執行DATA後 在執行 FORM 也沒問題

批次次序        樓層         ...
Andy2483 發表於 2025-11-3 14:56


前輩,是卡在copy sheet 的問題上。是否中文版亂碼導致copy問題?
   ThisWorkbook.Sheets(Z(T & "/s")).Copy Before:=Workbooks(xW).Sheets(1)

TOP

回復 142# 198188


    Z(T & "/s") 是英文
xW 是新增 活頁簿名稱(依照所使用語言新增的名字)
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復  198188


    Z(T & "/s") 是英文
xW 是新增 活頁簿名稱(依照所使用語言新增的名字)
Andy2483 發表於 2025-11-3 15:21



  你意思是說,xW 如果電腦是中文版,就會生產中文版嗎?不是英文版?那樣會不會有亂碼,導致生產不了?
因爲我每次運行都是在這�堨X錯。

TOP

回復  198188


    Z(T & "/s") 是英文
xW 是新增 活頁簿名稱(依照所使用語言新增的名字)
Andy2483 發表於 2025-11-3 15:21




前輩,應該不是亂碼問題,我改用英文版也出現這個問題。
現附出錯圖片給前輩參考。

TOP

回復 145# 198188


    出錯位置的T值 是什麼字串,xW是什麼字串?
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復  198188


    出錯位置的T值 是什麼字串,xW是什麼字串?
Andy2483 發表於 2025-11-3 16:01


中文版
xW 是亂碼
T 是 AC-Y

因爲版
xW 是 Book3
T 是 AC-Y

TOP

回復 147# 198188


    主程式換成以下代碼,請試試看
Option Explicit
Dim A, Z, R&, W, L, i&, Brr, Mrr, Q, Drr, j%
Sub Form()
Dim Arr, Crr(1 To 100000, 1 To 18), xW$, S, T$, T2$, Ts, MyPath$, xFile$, xBook As Workbook, Re
Ts = Timer
Application.ScreenUpdating = False
Set Z = CreateObject("Scripting.Dictionary")
MyPath = ThisWorkbook.Path & "\"
xFile = "Data Base.xlsx"
On Error Resume Next
Set xBook = Workbooks(xFile)
If xBook Is Nothing Then
   Set xBook = Workbooks.Open(MyPath & xFile, , True, , "")
   Re = True: ThisWorkbook.Activate
End If
On Error GoTo 0
Mrr = xBook.Sheets("Material").UsedRange
If Re = True Then xBook.Close 0
For i = 2 To UBound(Mrr): Z(Mrr(i, 3) & "/m") = i: Next
Brr = [Rule!A1].CurrentRegion
For i = 3 To UBound(Brr)
   For j = 2 To 8
      T = Brr(i, j)
      If T <> "" Then
         If Z(T & "|") = "" Then
            Z(T & "|") = Trim(Mid(Brr(2, j), 1, Len(Brr(2, j)) * 2 - LenB(StrConv(Brr(2, j), vbFromUnicode)) - 2))
         End If
         Exit For
      End If
   Next
   For j = 11 To 28
      If Brr(i, j) = "" Then Exit For
      T2 = Brr(i, 11) & "-" & T
      Z(Brr(i, j) & "-" & T) = T2
      If Z(T2 & "/") = "" Then Z(T2 & "/") = Brr(i, 9) & "-" & Z(T & "|")
      S = Brr(i, 1)
      Z(T2 & "/s") = S
      Z(S & "/UR") = Sheets(S).[A65536].End(3)(2).Row
      Z(S & "/UC") = Sheets(S).Cells(Z(S & "/UR") - 1, 256).End(xlToLeft).Column
   Next
Next
If Sheets("Part List").FilterMode = True Then Sheets("Part List").ShowAllData
With Range(Sheets("Part List").[P1], Sheets("Part List").[A65536].End(3)(2))
   With .Columns(15): .Cells = "=ROW()": .Value = .Value: End With
   Brr = .Value
   ReDim Arr(1 To UBound(Brr) - 1, 1 To 1)
   For i = 2 To UBound(Brr)
      T = Left(Brr(i, 1), 2) & "-" & Brr(i, 7)
      If InStr("Y-O", Right(T, 1)) Then Arr(i - 1, 1) = Z(T)
   Next
   .Cells(2, 16).Resize(UBound(Brr) - 1, 1) = Arr
   .Sort KEY1:=.Item(16), Order1:=1, Header:=1
   Brr = .Value
   .Sort KEY1:=.Item(15), Order1:=1, Header:=1
   .Cells(1, 15).Resize(, 2).EntireColumn.Delete
   A = Crr
   For i = 2 To UBound(Brr) - 1
      If Brr(i, 16) = "" Then Exit For Else T = Brr(i, 16)
      R = R + 1: A(R, 1) = R: Run Replace(Z(T & "/s"), " ", "_")
      If T <> Brr(i + 1, 16) Then
         Sheets(Z(T & "/s")).Copy Before:=Sheets(1)
         ActiveSheet.Name = T
         With Cells(Z(Z(T & "/s") & "/UR"), 1).Resize(R, Z(Z(T & "/s") & "/UC"))
            .Value = A
            .Borders.LineStyle = xlContinuous
         End With
         A = Crr: R = 0
      End If
   Next
End With
ThisWorkbook.Activate
If Sheets("Frame per Dwg").FilterMode = True Then Sheets("Frame per Dwg").ShowAllData
With Range(Sheets("Frame per Dwg").[I1], Sheets("Frame per Dwg").[A65536].End(3)(2))
   With .Columns(8): .Cells = "=ROW()": .Value = .Value: End With
   Drr = .Value
   ReDim Arr(1 To UBound(Drr) - 1, 1 To 1)
   For i = 2 To UBound(Drr)
      T = Left(Drr(i, 2), 2) & "-" & Drr(i, 6)
      If InStr("WT", Right(T, 1)) Then Arr(i - 1, 1) = Z(T)
   Next
   .Cells(2, 9).Resize(UBound(Drr) - 1, 1) = Arr
   .Sort KEY1:=.Item(9), Order1:=1, Header:=1
   Drr = .Value
   .Sort KEY1:=.Item(8), Order1:=1, Header:=1
   .Cells(1, 8).Resize(, 2).EntireColumn.Delete
   A = Crr: R = 0
   For i = 2 To UBound(Drr) - 1
      If Drr(i, 9) = "" Then Exit For Else T = Drr(i, 9)
      R = R + 1: A(R, 1) = R: Run Replace(Z(T & "/s"), " ", "_")
      If T <> Drr(i + 1, 9) Then
         Sheets(Z(T & "/s")).Copy Before:=Sheets(1)
         ActiveSheet.Name = T
         With Cells(Z(Z(T & "/s") & "/UR"), 1).Resize(R, Z(Z(T & "/s") & "/UC"))
            .Value = A
            .Borders.LineStyle = xlContinuous
         End With
         A = Crr: R = 0
      End If
   Next
End With
Set Z = Nothing
Erase Arr, Brr, Crr, Drr, A, Mrr
MsgBox "共耗時:" & Timer - Ts & " 秒"
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復  198188


    主程式換成以下代碼,請試試看
Option Explicit
Dim A, Z, R&, W, L, i&, Brr, Mr ...
Andy2483 發表於 2025-11-3 16:31



也一樣,卡在那�堙C

xW 是“ ”空白
T 是 AC-Y

TOP

回復 147# 198188


    把亂碼的工作表名改掉試試看

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

TOP

        靜思自在 : 真正的愛心,是照顧好自己的這顆心。
返回列表 上一主題