返回列表 上一主題 發帖

用VBA做查詢系統

回復 9# aassddff736

抱歉! 忘了說 我想要工作表原格式在主頁上可以嗎? 那些儲存格色彩是標記用的

TOP

回復 9# aassddff736

1.如果鋼板沒有建立儲位編號 B欄留白,但是報廢與帶報廢鋼板B欄顯示
If R > E  Then Crr(R, 1) = S
改為
If R > E And InStr("待報廢", S) Then Crr(R, 1) = S

2.怎麼查空儲位?
手動 篩選D欄 > 空格
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 12# Andy2483


    也是直接篩選比較快

TOP

回復 11# aassddff736

如果全部格式都要過去,請先自己試著錄製巨集,接龍到主頁表
發話題的範例應該要含格式都複製過去讓協助者明白需求
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復  Andy2483


    也是直接篩選比較快
aassddff736 發表於 2024-3-7 14:22



    資料如果有匯到主頁,篩選的動作代碼錄製巨集就可以辦到
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 15# Andy2483


    感謝您 我再試試看

TOP

回復 11# aassddff736
謝謝論壇,謝謝各位前輩


Option Explicit
Sub 資料彙整入主頁篩選區()
Application.ScreenUpdating = False: Application.DisplayAlerts = False
Dim Arr, Brr, Crr(1 To 10000, 1 To 1), Z, Q, i&, j%, R&, N&, S, T$, E&, TT$, xR As Range
Set Z = CreateObject("Scripting.Dictionary")
With Sheets("主頁")
   .Activate: If .AutoFilter Is Nothing Then [B17:Q17].AutoFilter Else If .FilterMode = True Then .ShowAllData
   With ActiveWindow: .FreezePanes = False: .ScrollRow = 13: .SplitRow = 5: .FreezePanes = True: End With: .UsedRange.Offset(17).EntireRow.Delete
End With
Q = Array("1至588", "SUPER", "POWER", "POWER試產", "TEST", "待報廢", "報廢")
For Each S In Q
   Set xR = [D65536].End(3)(2, 0): If Sheets(S).FilterMode = True Then Sheets(S).ShowAllData
   R = Sheets(S).[B65536].End(3).Row - 2: Sheets(S).[A3].Resize(R, 14).Copy xR: If InStr("待報廢", S) Then xR.Resize(R, 1).Offset(, -1) = S
Next
Set Brr = Range([P18], [D65536].End(3)(1, -1)): Brr.Font.Size = 8: N = Brr.Rows.Count: Brr = Brr.Resize(10000).Resize(, 2)
For i = 1 To UBound(Brr): Z(Brr(i, 2)) = i: Next: Z.Remove ("")
Q = Array(Range([儲位!B3], [儲位!A65536].End(xlUp)), Range([儲位!E3], [儲位!D65536].End(xlUp)))
For Each Arr In Q
   Arr = Arr
   For i = 1 To UBound(Arr)
      T = Arr(i, 2): If Z.Exists(T) Then Brr(Z(T), 1) = Arr(i, 1) Else N = N + 1: Brr(N, 1) = Arr(i, 1): Brr(N, 2) = Arr(i, 2)
   Next
Next
With [B18].Resize(N, 2): .Value = Brr: .Resize(, 15).Borders.LineStyle = 1: .EntireRow.AutoFit: End With: Call 註解_調整至指定位置
End Sub
Sub 註解_調整至指定位置()
Dim CO As Comment, SL&, ST&
For Each CO In ActiveSheet.Comments
   With CO
      With Range(.Parent.Address): SL = .Left + .Width + 10: ST = .Top + 10: End With: With .Shape: .Left = SL: .Top = ST: End With
     .Shape.TextFrame.Characters.Font.Size = 12: .Shape.DrawingObject.AutoSize = True
   End With
Next
Application.DisplayCommentIndicator = -1
End Sub
Sub 清除主頁篩選區資料()
With Sheets("主頁")
   .Activate: If .AutoFilter Is Nothing Then [B17:Q17].AutoFilter Else If .FilterMode = True Then .ShowAllData
   With ActiveWindow: .FreezePanes = False: .ScrollRow = 1: .SplitRow = 17: .FreezePanes = True: End With: .UsedRange.Offset(17).EntireRow.Delete
End With
End Sub
Sub 主頁篩選區資料_全部顯示()
With Sheets("主頁")
   .Activate: If .AutoFilter Is Nothing Then [B17:Q17].AutoFilter Else If .FilterMode = True Then .ShowAllData
   With ActiveWindow: .FreezePanes = False: .ScrollRow = 13: .SplitRow = 5: .FreezePanes = True: .ScrollRow = 1: End With
   If .[D65536].End(3).Row = 17 Then Call 資料彙整入主頁篩選區
End With
End Sub
Sub 空儲位()
Call 主頁篩選區資料_全部顯示: Selection.AutoFilter Field:=2, Criteria1:="<>": Selection.AutoFilter Field:=3, Criteria1:="="
End Sub
Sub 沒有儲位的鋼板()
Call 主頁篩選區資料_全部顯示: Selection.AutoFilter Field:=3, Criteria1:="<>": Selection.AutoFilter Field:=2, Criteria1:="="
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 17# Andy2483
哇!太更興了 謝謝您很多 我試試

TOP

回復 17# Andy2483




請問一下我儲存格A18向下帶入超連結儲存公式vba如何寫
=IF(D18="","",HYPERLINK("#"&LOOKUP(1,0/COUNTIF(INDIRECT({"POWER試產";"待報廢";"報廢";"1至588";"SUPER";"POWER"}&"!B:B"),D18),{"POWER試產";"待報廢";"報廢";"1至588";"SUPER";"POWER"})&"!"&"B"&MATCH(D18,INDIRECT(LOOKUP(1,0/COUNTIF(INDIRECT({"POWER試產";"待報廢";"報廢";"1至588";"SUPER";"POWER"}&"!B:B"),D18),{"POWER試產";"待報廢";"報廢";"1至588";"SUPER";"POWER"})&"!"&"B:B"),0),"●"))

TOP

回復 19# aassddff736

Sub 資料彙整入主頁篩選區()
Application.ScreenUpdating = False: Application.DisplayAlerts = False
Dim Arr, Brr, Crr(1 To 10000, 1 To 1), Z, Q, i&, j%, R&, N&, S, T$, E&, TT$, xR As Range
Set Z = CreateObject("Scripting.Dictionary")
With Sheets("主頁")
   .Activate: If .AutoFilter Is Nothing Then [B17:Q17].AutoFilter Else If .FilterMode = True Then .ShowAllData
   With ActiveWindow: .FreezePanes = False: .ScrollRow = 13: .SplitRow = 5: .FreezePanes = True: End With: .UsedRange.Offset(17).EntireRow.Delete
End With
Q = Array("1至588", "SUPER", "POWER", "POWER試產", "TEST", "待報廢", "報廢")
For Each S In Q
   Set xR = [D65536].End(3)(2, 0): If Sheets(S).FilterMode = True Then Sheets(S).ShowAllData
   R = Sheets(S).[B65536].End(3).Row - 2: Sheets(S).[A3].Resize(R, 14).Copy xR: If InStr("待報廢", S) Then xR.Resize(R, 1).Offset(, -1) = S
   For i = 1 To xR.Resize(R, 1).Offset(, -2).Count
      ActiveSheet.Hyperlinks.Add Anchor:=xR.Resize(R, 1).Offset(, 1)(i), Address:="", SubAddress:=S & "!A" & i + 2 & ":O" & i + 2
   Next
Next
Set Brr = Range([P18], [D65536].End(3)(1, -1)): Brr.Font.Size = 8: Brr.Columns(3).Font.Size = 12: N = Brr.Rows.Count: Brr = Brr.Resize(10000).Resize(, 2)
For i = 1 To UBound(Brr): Z(Brr(i, 2)) = i: Next: Z.Remove ("")
Q = Array(Range([儲位!B3], [儲位!A65536].End(xlUp)), Range([儲位!E3], [儲位!D65536].End(xlUp)))
For Each Arr In Q
   Arr = Arr
   For i = 1 To UBound(Arr)
      T = Arr(i, 2): If Z.Exists(T) Then Brr(Z(T), 1) = Arr(i, 1) Else N = N + 1: Brr(N, 1) = Arr(i, 1): Brr(N, 2) = Arr(i, 2)
   Next
Next
With [B18].Resize(N, 2): .Value = Brr: .Resize(, 15).Borders.LineStyle = 1: .EntireRow.AutoFit: End With: Call 註解_調整至指定位置
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 知識要用心體會,才能變成自己的智慧。
返回列表 上一主題