返回列表 上一主題 發帖

[發問] 請問要如何簡化/更改VBA, 完成往後的Order呢?

店名列位 = Sheets("Total").Columns(aaa).Find(What:="A店001", LookIn:=xlValues, Lookat:=xlWhole, SearchDirection:=xlPrevious).Row

Look at:=xlwhole
的用法是要完全比對,我有一行並沒有打到
但想了一下打了完全比對好像也沒用

因為我想到妳的店名有可能重複
那一開始的定位 或許你要找一下其他方式
或者用selection.range的方式
儲存成變數,選好起始欄位
在抓欄列值
再傳給後面的程式碼使用

TOP

回復 2# boomf2
  1.     Sub 自動新增日工作簿更新()

  2. 本檔名 = ActiveWorkbook.Name
  3. 本路徑 = ActiveWorkbook.Path


  4. '***********************************************找出a店001位置***********************************
  5. For aaa = 1 To 20
  6. On Error Resume Next
  7. 店名欄位 = Sheets("Total").Rows(aaa).Find(What:="A店001", LookIn:=xlValues, SearchDirection:=xlPrevious).Column
  8. On Error GoTo 0
  9. Next

  10. For aaa = 1 To 店名欄位
  11. On Error Resume Next
  12. 店名列位 = Sheets("Total").Columns(aaa).Find(What:="A店001", LookIn:=xlValues, Lookat:=xlWhole, SearchDirection:=xlPrevious).Row
  13. On Error GoTo 0
  14. Next
  15. '***********************************************找出a店001位置***********************************




  16. '***********************************************找出最後一間店位置***********************************
  17. 店名最後欄位 = Sheets("Total").Rows(店名列位).Find(What:="*", LookIn:=xlValues, Lookat:=xlWhole, SearchDirection:=xlPrevious).Column
  18. '***********************************************找出最後一間店位置***********************************




  19. '***********************************************找出產品數量***********************************
  20. 產品code欄 = Sheets("Total").Rows(店名列位).Find(What:="產品CODE", LookIn:=xlValues, Lookat:=xlWhole, SearchDirection:=xlPrevious).Column

  21. 產品code列 = Sheets("Total").Columns(產品code欄).Find(What:="*", LookIn:=xlValues, SearchDirection:=xlPrevious).Row

  22. 產品總數 = 產品code列 - 店名列位
  23. '***********************************************找出產品數量***********************************


  24. '***********************************************讓之後迴圈用***********************************
  25. 產品起始列定位 = 店名列位 + 1
  26. 產品結束列定位 = 產品code列
  27. '***********************************************讓之後迴圈用***********************************

  28. ''*************************其他資訊*************************
  29. 日期暫存 = Workbooks(本檔名).Sheets("Total").[G1]

  30. ''*************************其他資訊*************************





  31. '*************************流水號迴圈起始值*************************
  32. 流水 = 1
  33. '*************************流水號迴圈起始值*************************

  34. While 店名欄位 < 店名最後欄位 + 1

  35. 店名 = Workbooks(本檔名).Sheets("Total").Cells(店名列位, 店名欄位)


  36. 出檔號 = "order" & 流水
  37. Set nX = Workbooks.Add


  38. Application.DisplayAlerts = False

  39. ActiveWorkbook.Sheets(3).Delete
  40. ActiveWorkbook.Sheets(2).Delete
  41. ActiveWorkbook.Sheets(1).Name = 店名


  42. 產品運算列 = 產品起始列定位
  43. 產品停算列 = 產品結束列定位

  44.     orderrow = 1
  45.     While 產品運算列 < 產品停算列 + 1
  46.     If Workbooks(本檔名).Sheets("Total").Cells(產品運算列, 店名欄位) <> "" Then
  47.    
  48.             ActiveWorkbook.Sheets(1).Cells(orderrow, 1) = "DK"
  49.             ActiveWorkbook.Sheets(1).Cells(orderrow, 3) = 日期暫存
  50.             ActiveWorkbook.Sheets(1).Cells(orderrow, 4) = "DN"
  51.             ActiveWorkbook.Sheets(1).Cells(orderrow, 5) = "B99"
  52.             ActiveWorkbook.Sheets(1).Cells(orderrow, 6) = "店名"
  53.             ActiveWorkbook.Sheets(1).Cells(orderrow, 7) = Workbooks(本檔名).Sheets("Total").Cells(產品運算列, 產品code欄).Value
  54.             ActiveWorkbook.Sheets(1).Cells(orderrow, 8) = Workbooks(本檔名).Sheets("Total").Cells(產品運算列, 產品code欄 + 3).Value
  55.             ActiveWorkbook.Sheets(1).Cells(orderrow, 9) = Workbooks(本檔名).Sheets("Total").Cells(產品運算列, 店名欄位)
  56.             orderrow = orderrow + 1
  57.     End If
  58.    
  59.    
  60.     產品運算列 = 產品運算列 + 1
  61.     Wend

  62. nX.SaveAs ThisWorkbook.Path & "/" & 出檔號 & 店名
  63. nX.Close

  64. 流水 = 流水 + 1
  65. 店名欄位 = 店名欄位 + 1
  66. Wend


  67. End Sub
複製代碼

TOP

回復 2# boomf2


    剛發現你有兩個 A店002 請問想如何區別

   因為檔案名稱不能有重複

TOP

我做的 按鈕1 很笨
只能成功在新的SHEET產生了 特定ORDER 1 - Sheet (A店001).

請問要如何簡化/更改VBA ...
boomf2 發表於 2017-1-9 01:31



    Order更新1.rar (30.99 KB)

原來我放錯附件了...這個才對的

我做的 按鈕1
只能成功在新的SHEET產生了 特定ORDER 1 - Sheet (A店001).

請問要如何簡化/更改VBA, 完成往後的15張 Order呢?
其實我想把全部15個都放在新WORKBOOK, 分成15張SHEET的.

請高指導一下要怎麼寫vba...:'(

TOP

        靜思自在 : 信心、毅力、勇氣三者具備,則天下沒有做不成的事。
返回列表 上一主題