返回列表 上一主題 發帖

[發問] 如何取得最近的需求日期以及數量

回復 1# adam2010
試試看:
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim 在製量, 需求量 As Long
  3.     Dim r1, c1 As Integer
  4.    
  5.     '如果 在製量(欄B) 或 需求量(欄G以後) 有異動, 則
  6.     If Target.Column = 2 Or Target.Column > 6 Then
  7.         r1 = Target.Row    '資料異動所在列
  8.         在製量 = Cells(r1, 2)
  9.         需求量 = 0
  10.         c1 = 6
  11.         Do
  12.             c1 = c1 + 1
  13.             需求量 = 需求量 + Cells(r1, c1)
  14.         Loop Until 需求量 > 在製量
  15.         Cells(r1, 5) = Cells(1, c1)  '待投日期
  16.         Cells(r1, 6) = 需求量 - 在製量 '待投數量
  17.     End If
  18. End Sub
複製代碼
ps:
1. 為何 D2 不是 =C2-B2, 而是  =B2+C2?(筆誤?)
2. 總量公式(CD2)與 C2公式一樣, 可刪, (保留C2公式即可, 更有彈性)

TOP

本帖最後由 yen956 於 2014-6-7 12:44 編輯

更正, 增加一列(避免錯誤產生):
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim 在製量, 需求量 As Long
    Dim r1, c1 As Integer
   
    '如果 在製量(欄B) 或 需求量(欄G以後) 有異動, 則
    If Target.Column = 2 Or Target.Column > 6 Then
        r1 = Target.Row    '資料異動所在列
        If Not IsNumber(Cells(r1, 2)) Then Exit Sub
        在製量 = Cells(r1, 2)
        需求量 = 0
        c1 = 6
        Do
            c1 = c1 + 1
            需求量 = 需求量 + Cells(r1, c1)
        Loop Until 需求量 > 在製量
        Cells(r1, 5) = Cells(1, c1)  '待投日期
        Cells(r1, 6) = 需求量 - 在製量 '待投數量
    End If
End Sub

TOP

回復 9# adam2010
抱歉, 應該加上 Application.IsNumber 才對!!
        If Not Application.IsNumber(Cells(r1, 2)) Then Exit Sub

TOP

        靜思自在 : 多做多得。少做多失。
返回列表 上一主題