Board logo

標題: [發問] 某區間 隔一列貼上 [打印本頁]

作者: PJChen    時間: 2019-12-17 16:21     標題: 某區間 隔一列貼上

Dear,

我想將Workbooks("A庫存表.xlsx").Sheets("盤點")
T6:Y6
T8:Y8
    ┋
T26:Y26 的資料copy後,貼到
Workbooks("最新庫存.xlsx").Sheets("check")
從AV34、AV36...一直到貼完T26:Y26的"值",也就是隔一列貼上
請問VBA語法該怎麼寫?
作者: 89305039    時間: 2019-12-18 11:19

最簡單是先計算好 區間範圍 然後程式就很簡單寫,

Workbooks("最新庫存.xlsx").Activate

Activesheet.Range("33:33,35:35,....(依此類推寫完)").Select
Selection.Insert Shift:=xlDown

set wb = Workbooks("A庫存表.xlsx").Sheets("盤點")

For i = 6 To 26 Step 2

wb.Range(i & ":" & i).Copy Activesheet.Range(28 + i & ":" & 28 + i)

Next
作者: PJChen    時間: 2019-12-18 19:36

本帖最後由 PJChen 於 2019-12-18 19:46 編輯

回復 2# 89305039

您好,
目的檔,要貼上的資料,是一個區域不是整列
Workbooks("最新庫存.xlsx").Sheets("check")
從AV34、AV36...
所以不能用這個寫法,而且要貼上的地方是雙數,為什麼這個是單數?
Activesheet.Range("33:33,35:35,....(依此類推寫完)").Select
而且我的2個表格都不要有任何變動,這樣表格會破壞,所以不能有
Selection.Insert Shift:=xlDown
可以再幫忙用別的寫法嗎? 謝謝
作者: ikboy    時間: 2019-12-19 10:16

  1. Sub zz()
  2. Dim ss As Worksheet
  3. Application.ScreenUpdating = 0
  4. Set ss = Workbooks("最新庫存.xlsx").Sheets("check")
  5. With Workbooks("A庫存表.xlsx").Sheets("盤點")
  6.     For i = 6 To 26 Step 2
  7.         .Range("T" & i).Resize(1, 6).Copy ss.Range("AV" & 28 + i).Resize(1, 6)
  8.     Next
  9. End With
  10. Application.ScreenUpdating = 1
  11. End Sub
複製代碼

作者: PJChen    時間: 2019-12-20 21:13

回復 4# ikboy

感謝...這個程式OK
請問,如要只要貼上值,不要格式,這句該怎麼改?
.Range("T" & i).Resize(1, 6).Copy ss.Range("AV" & 28 + i).Resize(1, 6)
作者: PJChen    時間: 2019-12-22 20:46

回復 4# ikboy
只貼值的問題解決了,不過請問
雖然程式中加了,這二句,但畫面還是會一直閃動
Application.ScreenUpdating = 0
Application.Calculation = xlManual     '手動計算

但如果在程式中直接按F5,不但執行更快,而且不會閃,是為什麼?
我是在程式中做了一個觸發按鍵去執行程式
有沒有什麼方式可以讓它像按F5的效果一樣?




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)