返回列表 上一主題 發帖

[發問] copy資料

[發問] copy資料

Dear,
這個程式第一個部份:copy 期初庫存 一直無法貼上,請幫忙看下...
1)copy 期初庫存 但一直無法貼上值
來源檔  庫存表
xRow = Cells(Cells.Rows.Count, "B").End(xlUp).Row
Set Rng = Range("S5:S" & xRow)
貼到目的檔 最新庫存-佳品
Workbooks("最新庫存-佳品.xlsx").Sheets("佳品").Activate
.Range("AM6:AM" & xRow).PasteSpecial xlPasteValues

2)copy 盤點資料 執行沒問題,但已經寫了Application.ScreenUpdating = False
為什麼執行時,螢幕會一直閃?

3) 另有一個程式Sub 出貨(),是在其他程式中呼叫,但只需在每週一、四執行,請問要如何寫這段程式Call Module211.出貨
Copy資料.rar (241.95 KB)

回復 1# PJChen

試試看
將Workbooks("最新庫存-佳品.xlsx").Sheets("佳品").Activate
.Range("AM6:AM" & xRow).PasteSpecial xlPasteValues
改為-->
Workbooks.Open(Path & "最新庫存-佳品.xlsx").Sheets("佳品").Activate
Range("AM6:AM" & (xRow + 1)).PasteSpecial xlPasteValues '選擇性貼上值

TOP

回復 2# jcchiang
Dear jcchiang,

有設路徑的"庫存表"是來源檔
xRow = Cells(Cells.Rows.Count, "B").End(xlUp).Row
Set Rng = Range("S5:S" & xRow)
"S5:S"有合併儲存格, 一直無法貼到目的檔 最新庫存-佳品

Workbooks("最新庫存-佳品.xlsx").Sheets("佳品")因為工作時,一直都是開啟的,所以沒有設置路徑,所以不需要Open(Path & ...
改為以下還是無法貼...
Workbooks.Open(Path & "最新庫存-佳品.xlsx").Sheets("佳品").Activate
Range("AM6:AM" & (xRow + 1)).PasteSpecial xlPasteValues '選擇性貼上值

其實我在使用copy的功能,一般都只貼上值,所以我最想要的寫法是xRng = Rng.Values
不過就是不能貼上,貌似不能這麼寫,我想知道還有什麼簡潔的寫法嗎?
目前我先暫用寫死的方法,不然無法運作,但又不喜歡這個死方法,儲存格一但變動,非得要修改,不然資料就錯了!
Workbooks("最新庫存-佳品.xlsx").Sheets("佳品").Range("AM6:AM20") = Rng.Value

With Workbooks.Open(Path & File)
           Set W = Workbooks.Open(Path & File)
               With W.Sheets(i)
                   W.Sheets(i).Activate
xRow = Cells(Cells.Rows.Count, "B").End(xlUp).Row
Set Rng = Range("S5:S" & xRow)
              End With
Workbooks("最新庫存-佳品.xlsx").Sheets("佳品").Activate
Set xRng = Range("AM6:AM" & xRow)
xRng = Rng.Values

TOP

回復 3# PJChen

1.因為不曉得Workbooks("最新庫存-佳品.xlsx").Sheets("佳品")是已經開啟,所以才會在程式中增加開啟
2.範例檔中Range("S5:S" & xRow)中xRow是19,但Workbooks("最新庫存-佳品.xlsx").Sheets("佳品")中Range("AM6:AM" & xRow)是AM6:AM19所以貼不上
所以Range("AM6:AM" & (xRow + 1)).才多加一去滿足資料欄位
因為Range("S5:S19")跟Range("AM6:AM19")差一列

TOP

回復 4# jcchiang

感謝您詳細的解說,經過反覆練習,沒問題了,非常謝謝...

TOP

請問  程式Sub 出貨(),是在其他程式中呼叫,但只需在每週一、四執行,不是這個時間,則不用呼叫Module211.出貨,我試著寫成以下,但一直無法執行!
        If Weekday(Day, 2) Or Weekday(Day, 5) Then
                Call Module211.出貨
            Else
            Exit For ' 中斷
        End If

TOP

回復 6# PJChen

周一&周四
If Weekday(Day, 2)= 1 Or Weekday(Day, 2) = 4 Then
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

回復 7# 准提部林

准大好,
今天是週四,正好可以測試程式,結果我單獨執行 Module211.出貨 時沒問題,但以下程式,是否哪個語法還有錯誤?還是不能執行吔...
        If Weekday(Day, 2) = 1 Or Weekday(Day, 2) = 4 Then
                Call Module211.出貨
            Else
            Exit For
        End If

TOP

回復 8# PJChen

If Weekday(Date, 2) = 1 Or Weekday(Date, 2) = 4 Then
                 Call Module211.出貨
            Else
             Exit For
         End If

TOP

        靜思自在 : 人生最大的成就是從失敗中站起來。
返回列表 上一主題