返回列表 上一主題 發帖

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

回復 9# 妤璇

回復 9# 妤璇
  1. 請問我將程式貼上後,點指定巨集找不到 Worksheet_Change(ByVal Target As Range)
  2. 要怎麼使用呢?
複製代碼
你是想用舊的圖片按鈕, 指定巨集 給 Worksheet_Chang(ByVal Target As Range)?
但看不到 Worksheet_Change(ByVal Target As Range) 可以指定?
因為 sub xxxx(ByVal Target As Range) 有參數是無法指定巨集的,

TOP

回復 12# yen956
  1. 因為 sub xxxx(ByVal Target As Range) 有參數是無法指定巨集的,
複製代碼
這不對的

試試看 sheet1的
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     MsgBox Target.Address
  3. End Sub
複製代碼
其他模組中
  1. Sub Ex()
  2.     Run "sheet1.Worksheet_SelectionChange", Range("A15")
  3. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 13# GBKEE

        本來有些概念了,看完之後又亂掉了:'(

    請問我的G9:G24有設定函數,執行後會將函數覆蓋掉,有試著從
    Range([A9].Resize(, 8), [A9].Resize(, 8).End(xlDown)).ClearContents 中的(,8)改成(,6)
    證明我的想法有錯…

TOP

回復 14# 妤璇
是要改成如此嗎?
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim AR(), s%, T As Integer
  3.     Application.EnableEvents = False
  4.     If Target.Address = "$H$5" Then
  5.         T = 6        '設定欄數  *********
  6.         With Sheets("出貨清單")
  7.             For Each a In .Range(.[L3], .[L3].End(xlDown))
  8.                 If a = Target Then
  9.                     m = a.Offset(, -2).Value
  10.                     ReDim Preserve AR(s)
  11.                     AR(s) = Application.Transpose(Application.Transpose(a.Offset(, -11).Resize(, T).Value))
  12.                     'Ar(s) = Application.Transpose(Application.Transpose(a.Offset(, -11).Resize(, 8).Value))
  13.                     s = s + 1
  14.                 End If
  15.             Next
  16.         End With
  17.         Range([A9].Resize(, T), [A9].Resize(, T).End(xlDown)).ClearContents
  18.         'Range([A9].Resize(, 8), [A9].Resize(, 8).End(xlDown)).ClearContents
  19.         [C3] = m
  20.         [A9].Resize(s, T) = Application.Transpose(Application.Transpose(AR))
  21.         '[A9].Resize(s, 8) = Application.Transpose(Application.Transpose(Ar))
  22.     End If
  23.     Application.EnableEvents = True
  24. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 15# GBKEE

    出現 小視窗
    執行階段錯誤'1004':
    無法改變合併儲存格中的一部份。
   
   我在想叫回過帳另外開新的工作表,如此便不會影響出貨單的函數
   只是最下方送貨方式的那個框框,文字會變成空白的= =
   不知道可不可以幫我修改程式?
   謝謝!!

TOP

回復 13# GBKEE
妤璇 的原始檔案有不少【圖形按鈕】,
這些【圖形按鈕】都是利用【指定巨集】, 去執行巨集,
故我所說的【指定巨集】, 和你所說的【指定巨集】(Run Marco)
的內涵是不一樣的.
請看下圖就明白了:

TOP

回復 16# 妤璇

panmoong物料管理.zip (47.2 KB)

麻煩你了:)
謝謝!

TOP

回復 17# yen956


我之前都是用巨集,不明白 Worksheet_Change  為何無法指定巨集
後來才知道這種的叫事件驅動程式
有個概念了,看你們的討論又暈了
你們太厲害了

TOP

回復 17# yen956
轉個彎也可以
  1. Sub Test()
  2.     Test1 Range("H5")
  3. End Sub
  4. Sub Test1(ByVal Target As Range)
  5.     MsgBox Target.Address
  6. End Sub
複製代碼
回復 18# 妤璇
修改一下,試試看
  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.         If s > 0 Then
  16.             [C3] = m
  17.             With [A9:H24]
  18.                 .Cells = ""
  19.                 .Cells(1).Resize(s, 8) = Application.Transpose(Application.Transpose(Ar))
  20.             End With
  21.         Else
  22.             MsgBox "出貨清單 中沒有 " & Target
  23.         End If
  24.     End If
  25.     Application.EnableEvents = True
  26. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 20# GBKEE


    可以了,太感謝你了。

TOP

        靜思自在 : 能善用時間的人,必能掌握自己努力的方向。
返回列表 上一主題