返回列表 上一主題 發帖

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

回復  198188


    本檔與DATA BASE1檔 都各有一個 Material表,兩表有何關係?
Andy2483 發表於 2025-10-29 08:56


兩個Material表是一樣的,因為Data Base 比較大,上載不了,之前製表時方便前輩看該表格式,所以就轉移到本檔。
所以本檔的Material表是不要的。

TOP

回復 81# 198188

如果 本檔的Material表是不要的! 後續執行 Sub Form() 時 需要再啟一次 DATA BAS1檔案才能讀到 Material表的 資料
所以 請問  Sub Data() 和 Sub Form() 這兩個程式是以下哪種需求?
1.按一次鈕後兩個程式接續執行完得到.PDF檔
2.按鈕Sub Data()先執行後,手動編輯本檔,再按鈕執行 Sub Form() 得到.PDF檔
3.其他
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復  198188

如果 本檔的Material表是不要的! 後續執行 Sub Form() 時 需要再啟一次 DATA BAS1檔案才能 ...
Andy2483 發表於 2025-10-29 10:56



    sub Data 是打開Data base 讀取 WO NO ,LAYOUT PER DWG, FRAME PER DWG, PART LIST。

SUB FORM 是生產新表單,然後打開Data base, 讀取material資料,並生產PSD。

TOP

回復 83# 198188


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

TOP

回復  198188


    請選擇 1 ,2 或3
Andy2483 發表於 2025-10-29 14:18



    選擇3, 分開3個鍵,一個執行DATA 一個執行 FORM,一個執行打印PDF

TOP

回復 85# 198188


    先測試 DATA:
Sub Data()
Dim Arr, Brr, Crr, Z, Q, S, i&, j%, N&, T$, T1$, MyPath$, xFile$, xBook As Workbook, Re, R&
Application.ScreenUpdating = False
For Each S In [{"Layout Dwg","Frame per Dwg","Part List"}]
   Sheets(S).UsedRange.Rows.Offset(1).EntireRow.Delete
   '↑刪除本檔舊資料
Next
MyPath = ThisWorkbook.Path & "\"
xFile = "Data Base1.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
Set Z = CreateObject("Scripting.Dictionary")
T = Sheets("Read").[A2] & "|" & Sheets("Read").[C2]
T1 = Sheets("Read").[B2]
With xBook.Sheets("WO No")
   For i = 2 To .[A65536].End(3).Row
      If .Cells(i, "B") & "|" & .Cells(i, "D") = T Then
         .Rows(i).Copy Sheets("WO No").Rows(2)
         For j = 6 To 11
            Z("|" & .Cells(i, j)) = ""
            '↑令WO No表的 F-K 欄的 字母前方連接"|"字元當key,item是空字元納入Z字典
         Next
         Sheets("Read").[A2].Resize(, 3).Copy Sheets("WO No").[B2]
         GoTo 11
      End If
   Next
   MsgBox "Nothing": Exit Sub
End With
11
If T1 Like "##F-*##F" Then
   For i = Val(T1) To Val(StrReverse(Mid(StrReverse(T1), 2, 2)))
      Z(Format(i, "00F")) = ""
   Next
   Else
      Q = Split(T1 & "&" & T1, "&")
      For i = 0 To UBound(Q)
         Z(Q(i)) = 0
      Next
End If
Brr = xBook.Sheets("Layout Dwg").[A1].CurrentRegion
For i = 2 To UBound(Brr)
   If Z.Exists(Brr(i, 2)) And Brr(i, 4) = Sheets("Read").[A2] Then
      '↑如果B欄 樓層及 D欄 批次次序吻合
      Z(Brr(i, 1)) = Z(Brr(i, 1)) + Val(Brr(i, 3))
      '↑本檔的Layout Dwg表 的A欄 分佈圖號(其C欄數量要加總,以下稱:LD合計數量)
      N = N + 1
      For j = 1 To 4: Brr(N, j) = Brr(i, j): Next
   End If
Next
If N > 0 Then Sheets("Layout Dwg").[A2].Resize(N, 4) = Brr: N = 0 Else MsgBox "Nothing under the floor": GoTo 12
Brr = xBook.Sheets("Frame per Dwg").[A1].CurrentRegion
For i = 2 To UBound(Brr)
   If Z(Brr(i, 1)) > 0 Then
      N = N + 1
      For j = 1 To 6: Brr(N, j) = Brr(i, j): Next
      Brr(N, 5) = Brr(N, 5) * Z(Brr(i, 1))
      '↑本檔的Frame per Dwg,其中E欄的數量要*LD合計數量
      If Z(Brr(i, 2)) > 0 Then
         MsgBox "Layout Dwg表A欄(分佈圖號)與 Frame per Dwg表B欄(組裝圖號)重複" & vbLf & vbLf & Brr(i, 2)
         Exit Sub
      End If
      Z(Brr(i, 2) & "/") = Z(Brr(i, 2) & "/") + Brr(N, 5)
      '↑本檔的Frame per Dwg表 的B欄 組裝圖號 (其E欄數量要加總,以下稱:FD合計數量)
   End If
Next
If N > 0 Then Sheets("Frame per Dwg").[A2].Resize(N, 6) = Brr: N = 0 Else MsgBox "Frame per Dwg_Nothing"
Brr = xBook.Sheets("Part List").[A1].CurrentRegion
ReDim Arr(1 To 100000, 1 To 13): Crr = Arr
For i = 2 To UBound(Brr)
   T = Brr(i, 8)
   If T Like "*[a-z]" Then Q = Left(T, Len(T) - 1) Else Q = "||"
   If Z(T) > 0 Or Z(Q) > 0 Then
      N = N + 1
      For j = 1 To 13: Arr(N, j) = Brr(i, j): Next
      Arr(N, 3) = Arr(N, 3) * (Z(T) + Z(Q))
   End If
   '↑1.本檔的Layout Dwg表 的A欄 分佈圖號 要比對 Data Base 裡Part List表的H欄 分佈圖編號
   '1.1.若吻合時整列帶出來到本檔的Part List,其中C欄的數量要*LD合計數量
   '1.1.若Data Base 裡Part List表H欄字串尾部多了個小寫英文字母去除後也吻合 本檔的Layout Dwg表 的A欄 分佈圖號 時,也整列帶出來到本檔的Part List,其中C欄的數量要*LD合計數量

   If Z(T & "/") > 0 And Z.Exists("|" & Left(T, 2)) Then
      R = R + 1
      For j = 1 To 13: Crr(R, j) = Brr(i, j): Next
      Crr(R, 3) = Crr(R, 3) * Z(T & "/")
      '↑2.本檔的Frame per Dwg表 的B欄 組裝圖號(前2字元含有 WO No 表的 F - K 欄 的 字母) 要比對 Data Base 裡Part List表的H欄 分佈圖編號
      '2.1.若吻合時整列帶出來到本檔的Part List,其中C欄的數量要*FD合計數量

   End If
Next
If N > 0 Then
   With Sheets("Part List").[A2].Resize(N, 13)
      .Value = Arr
      .Interior.ColorIndex = 35
      '↑分佈圖號帶出來的儲存格底色是 綠色
   End With
End If
If R > 0 Then
   With Sheets("Part List").Cells(N + 2, 1).Resize(R, 13)
      .Value = Crr
      .Interior.ColorIndex = 36
      '↑組裝圖號帶出來的儲存格底色是 黃色(組裝圖號帶出來的在後段)
   End With
End If
If N + R = 0 Then MsgBox "Part List_Nothing"
12: If Re = True Then xBook.Close 0
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復  198188


    先測試 DATA:
Sub Data()
Dim Arr, Brr, Crr, Z, Q, S, i&, j%, N&, T$, T1$, My ...
Andy2483 發表於 2025-10-29 14:52



   

運行後, 出現Part List nothing, 但是基於規則應該有資料顯示,如上附圖。黃色部分應該顯示在Part List

TOP

本帖最後由 Andy2483 於 2025-10-30 09:23 編輯

回復 87# 198188


    同樣條件執行結果如下:



請檢視提供的範例與 實際執行檔案欄位是否相同
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復  198188


    同樣條件執行結果如下:



請檢視提供的範例與 實際執行檔案欄位是否相同
Andy2483 發表於 2025-10-30 09:21



欄位沒有錯,Layout Dwg, Frame per Dwg 都有資料導出,只有 Part List 沒有資料導出。

TOP

回復 89# 198188


    請上傳 範例本檔
DATA BAS1 不需要
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 【是否發揮了良能?】人間壽命因為短暫,才更顯得珍貴。難得來一趟人間,應問是否為人間發揮了自己的良能,而不要一味求長壽。
返回列表 上一主題