返回列表 上一主題 發帖

[發問] 如何利用核取方塊做數量加總計算

回復 9# luke
會是 2007 版 不接受變數用中文設定嗎?
請你將 "區域" 這中文變數 改成 英文 "xlWord" 試試看

TOP

回復 10# Hsieh

謝謝H大
   
若sheet1表核取方塊中多了代碼E001和代碼D01有新增的料號名稱
如D0012, E0001和E0002並不存在sheet1表中時

如何將這些新增料號/名稱/數量
做勾選加總時,一併轉到sheet2表內

煩請先進 大大指導
TEST13C.rar (24.56 KB)

TOP

回復 12# luke
  1. Sub ex()
  2. Dim sp As Shape, A As Range
  3. Set d = CreateObject("Scripting.Dictionary")
  4. Set d1 = CreateObject("Scripting.Dictionary")

  5. With sheet1
  6. For Each sp In .Shapes
  7. If sp.Name Like "Check*" Then
  8.   If sp.OLEFormat.Object.Value = 1 Then d(sp.OLEFormat.Object.Caption) = 0
  9. End If
  10. Next
  11. For Each A In .Range(.[A10], .[A10].End(xlDown))
  12. If d.exists(A.Value) = True Then d1(A.Offset(, 1) & "," & A.Offset(, 2)) = d1(A.Offset(, 1) & "," & A.Offset(, 2)) + A.Offset(, 3)
  13. Next
  14. End With
  15. With sheet2
  16. For Each A In .Range(.[A2], .[A2].End(xlDown))
  17.   A.Offset(, 3) = A.Offset(, 2) + d1(A & "," & A.Offset(, 1))
  18.   d1.Remove A & "," & A.Offset(, 1)
  19. Next
  20. For Each ky In d1.keys
  21.   Set A = .Cells(.Rows.Count, 1).End(xlUp).Offset(1)
  22.   A.Resize(, 2) = Split(ky, ","): A.Offset(, 3) = d1(ky)
  23. Next
  24. End With
  25. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 11# GBKEE


    回覆G大

    將 "區域" 這中文變數 改成 英文 "xlWord" 仍無法結決


     以上

TOP

TEST13D.rar (44.58 KB) 回復 13# Hsieh

謝謝 H大

sheet1表F欄示新增作sheet表判斷
代碼A=sheet2表
代碼B=sheet3表
代碼C=sheet4表

當勾選核取方塊後, 想從sheet1表F欄所對應的代碼,
同時對sheet2表,sheet3表和sheet4表
進行合併加總並將該料號/名稱的數量
以紅色標示
如各表所示位置

煩請先進 大大指導

TOP

回復 14# luke
可否將套用我的程序檔案上傳看看

TOP

回復 15# luke
  1. Sub ex()
  2. Dim Mystr$, A As Range
  3. Set d = CreateObject("Scripting.Dictionary")
  4. With sheet1
  5. For Each sp In .Shapes
  6. If sp.Name Like "Check*" Then
  7.   If sp.OLEFormat.Object.Value = 1 Then Mystr = Mystr & "," & sp.OLEFormat.Object.Caption
  8. End If
  9. Next
  10. For Each A In .Range(.[A10], .[A10].End(xlDown))
  11. k = Asc(A.Offset(, 5)) - 63
  12.   If InStr(Mystr, A) > 0 Then
  13.     d(k & "," & A.Offset(, 1) & "," & A.Offset(, 2)) = d(k & "," & A.Offset(, 1) & "," & A.Offset(, 2)) + A.Offset(, 3)
  14.   End If
  15. Next
  16. End With

  17. For i = 2 To 4
  18. With Sheets(i)
  19. For Each A In .Range(.[A2], .[A2].End(xlDown))
  20.    A.Offset(, 3) = A.Offset(, 2) + d(i & "," & A & "," & A.Offset(, 1))
  21.    d.Remove i & "," & A & "," & A.Offset(, 1)
  22. Next
  23. End With
  24. Next
  25. For Each ky In d.keys
  26. ar = Split(ky, ",")
  27. With Sheets(CInt(ar(0)))
  28. Set A = .[A1].End(xlDown).Offset(1, 0)
  29. A = ar(1): A.Offset(, 1) = ar(2): A.Offset(, 3) = d(ky)
  30. End With
  31. Next
  32. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 16# GBKEE


    回!覆G大

     原碼程式檔含錄製的GIF動畫如附件
       TEST13-2.rar (385.43 KB)

TOP

回復 17# Hsieh

謝謝H大

當sheet2表至 sheet4表任一工作表中A:C欄為空白欄時, 強制執行動作時間度長如上圖sheeet4表是一張空白工作表時, 電腦是否能夠判斷去顯示該sheet4表為空白表格並給予提示信息如"目前sheeet4表空白無資料".

原程式段結束前, 小弟加了sheet2表至sheet4表料號名稱的數量不相等時該數字以紅色標示, 是否可以簡化程式?

如何防止sheet2表至sheet4表空白錯誤和簡化數量不相同時用紅色標示出來?
TEST13D-1.rar (23.44 KB)

TOP

回復 18# luke
請問 那些控制項 你有 將 巨集 指定到這程序嗎?
如圖  

TOP

        靜思自在 : 做好事不能少我一人,做壞事不能多我一人。
返回列表 上一主題