返回列表 上一主題 發帖

[發問] 如何依出貨單的出貨單號,叫出之前存在在清單中的資料??

[發問] 如何依出貨單的出貨單號,叫出之前存在在清單中的資料??

本帖最後由 妤璇 於 2014-3-28 14:57 編輯

我的出貨單有設定過帳的巨集,按過帳按鈕,資料就會存在清單的工作表中
我想即然有辦法使用巨集將出貨單的資料轉存在清單中
是不是也有辦法作一個巨集,然後依「出貨單號」將存在清單中的相關資料都叫回來?

請前輩指教!!:)

物料管理3月28日.zip (299.04 KB)

回復 1# 妤璇
出貨單模組
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim Ar(), s%
  3. Application.EnableEvents = False
  4. If Target.Address = "$H$5" Then
  5. With Sheets("出貨清單")
  6.    For Each a In .Range(.[L3], .[L3].End(xlDown))
  7.      If a = Target Then
  8.      m = a.Offset(, -2).Value
  9.         ReDim Preserve Ar(s)
  10.         Ar(s) = Application.Transpose(Application.Transpose(a.Offset(, -11).Resize(, 8).Value))
  11.         s = s + 1
  12.      End If
  13.    Next
  14. End With
  15. Range([A9].Resize(, 8), [A9].Resize(, 8).End(xlDown)).ClearContents
  16. [C3] = m
  17. [A9].Resize(s, 8) = Application.Transpose(Application.Transpose(Ar))
  18. End If
  19. Application.EnableEvents = True
  20. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 1# 妤璇
試試看:
  1. '
  2. Private Sub 叫回過帳_Click()
  3.     Dim i, blankRow As Integer
  4.     Dim 出貨單號1, 出貨單號2 As String
  5.     Dim sh1, sh2 As Worksheet
  6.     Set sh1 = Sheets("出貨單")
  7.     Set sh2 = Sheets("出貨清單")
  8.     出貨單號1 = sh1.[H5]
  9.    
  10.     blankRow = sh1.[A65536].End(xlUp).Row + 1
  11.     For i = 3 To 65536
  12.         出貨單號2 = sh2.Cells(i, 12)
  13.         
  14.         If 出貨單號2 = "" Then
  15.             Exit Sub
  16.         ElseIf 出貨單號2 = 出貨單號1 Then
  17.             sh2.Cells(i, 1).Resize(1, 14).Copy sh1.Cells(blankRow, 1)
  18.             blankRow = blankRow + 1
  19.         End If
  20.     Next
  21. End Sub
複製代碼

物料管理3月28日.7z
http://www.mediafire.com/download/55eqy81iu923mf3/%E7%89%A9%E6%96%99%E7%AE%A1%E7%90%863%E6%9C%8828%E6%97%A5.7z

TOP

謝謝二位前輩!!
之前都用巨集,所以花了很久的時間在看,不過還是有很多不懂的
程式運行都ok,感恩呢!!

TOP

回復 4# yen956

請問,Private Sub  叫回過帳_Click的Private 是私有程序,當我按指定巨集時,沒看到,要將Private刪掉才可以,要怎麼做才可以在巨集中指定?

程式運行有個問題,叫回過帳後清除資料時,(G欄)、(J欄)、(K欄)、(L欄)、(M欄)、(N欄)沒辦法清除,需手動清除,如此一來寫入的函數也跟著被刪掉了
G欄是對應E欄,J欄、K欄、L欄、M欄、N欄是直接=某些欄位,這幾個是隱藏起來的,程式該如修改?另外工作表有設保護,我將Sheets("出貨單").Unprotect "0523" 寫在程式開始後,將  Sheets("出貨單").protect "0523"寫在程式結束前,但常常會出現錯誤的視窗,不然就是按完巨集後,保護工作表取消了。目前我的方法是新開一張工作表。

TOP

本帖最後由 yen956 於 2014-4-13 14:11 編輯

回復 6# 妤璇
抱歉, 沒考慮到公式回覆的問題,
不過我對公式的了解還是很膚淺, 愛莫能助.
你可拜託H版大試試
又, 新的 Command 按鈕(2000以後)無法指定巨集,
你可複製舊的按鈕, 重新命名, 就可指定巨集,

TOP

回復 7# yen956


   好的,謝謝你喔!!

TOP

回復 2# Hsieh


    請問我將程式貼上後,點指定巨集找不到 Worksheet_Change(ByVal Target As Range)
    要怎麼使用呢?

TOP

回復 9# 妤璇
2# Hsieh 有說
  1. 回復 1# 妤璇
  2. 出貨單模組
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 10# GBKEE


    感謝你 ,研究了很久,了解怎麼使用了,從中學到了些,發現我的問題也更多:D

TOP

        靜思自在 : 有多少力量就做多少事,不要心存等待,等待才會落空。
返回列表 上一主題