返回列表 上一主題 發帖

[發問] 以"指定字"作為copy並貼上值的指定範圍

[發問] 以"指定字"作為copy並貼上值的指定範圍

巨集中的指定範圍作copy並貼上值的動作,能否以"指定字"作為copy並貼上值的指定範圍?這個用意是在於工作表的資料有增加或減少時,用"指定字"作為範圍才不需要不斷的去修改巨集程式,請大家幫幫忙!
例如:D19:O133
以"Shipped per SS: "字樣為開始(D19),以"PACKING:"向右+11個儲存格(即O133)為結束
PKG.zip (19.34 KB)

回復 2# GBKEE
G大,您好

我把您寫的程式套到我的工作表巨集中,但他執行時,無法 作copy並貼上值的動作,我在工作表中打了公式作為實驗,結果另存後就都亂碼了,能否幫我看看問題出在哪?

PKG2.zip (20.5 KB)
    Windows("PKG.xlsx").Activate
  
    Sheets("PKG").Select
   
    Dim Rng(1 To 2) As Range
    With ActiveSheet
        Set Rng(1) = .Range("D:D").Find("Shipped per SS:", LOOKAT:=xlPart)
        Set Rng(2) = .Range("D:D").Find("PACKING:")
        If Rng(1) Is Nothing Or Rng(2) Is Nothing Then
            MsgBox "找不到"
        Else
            .Range(Rng(1), Rng(2)).Resize(, 11).Copy
         End If
    End With
   
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("Q122:Q122").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Paste
    Rows("143:143").Select
    Selection.ClearContents
    Range("C1").Select
    End With
ActiveWorkbook.SaveAs "P:\Shipping Doc\PJ\" & [Q5] & "_" & [C6] & " PO#" & [V7] & " by " & [C19] & " to " & [C22] & ".xlsx"
        
    Sheets("PKG").Select
    Columns("R:AC").Select
    Selection.Delete Shift:=xlToLeft
    Columns("A:C").Select
    Range("C11").Activate
    Selection.Delete Shift:=xlToLeft
   
   
    ActiveWorkbook.Save

   
End Sub

TOP

回復 4# GBKEE
回復 5# c_c_lai
VBA TEST.zip (35.57 KB)

二位好,
二種方式我都試了,還是行不通,我的巨集程式都是另存的,我需的是指定範圍作copy並貼上值的動作,結果另存後就都亂碼了,表示巨集中的"copy並貼上值的動作"並沒有生效!
現在我將作好的檔案上傳,能幫我看看出了什麼問題嗎?

TOP

回復 7# c_c_lai
Hi,

我看到你上傳執行巨集後的檔,就跟我執行的結果相同,有公式的地方都是亂碼,我知道巨集可以執行但我需的是指定範圍作copy並貼上值的動作,結果另存後就都亂碼了,表示巨集中的"copy並貼上值的動作"並沒有生效!

TOP

回復 10# c_c_lai
謝謝你這麼熱心,你將巨集中的以下這3行變成沒有作用,我知道這三行取消後有公式的地方就不會亂碼,但這不是我要的,
    ' Sheets("PKG").Select
    ' Columns("R:AC").Select
    ' Selection.Delete Shift:=xlToLeft
重點應該放在            .Range(Rng(1), Rng(2)).Resize(, 11).Copy   ....這行執行了以後只有copy沒有辦法在選取的範圍中貼上值,只要這個可以"起作用",其它有公式的部份就都不是問題,至於以下的6行是我一定要執行的,不能刪除.
    Sheets("PKG").Select
     Columns("R:AC").Select
     Selection.Delete Shift:=xlToLeft
    Columns("A:C").Select
    Range("C11").Activate
    Selection.Delete Shift:=xlToLeft

TOP

回復 11# GBKEE
VBA TEST.zip (35.83 KB)
Hi,

我將這個程式分階段執行了很多次,知道這個旨令沒有寫完,它只到copy並沒有在原指定範圍中貼上值,而且以下這樣做並不合乎我想要以"指定文字"作為設定的範圍,     .Range(Rng(1), Rng(2)).Resize(, 12).Copy Destination:=Sheets(2).Range("A1")
請幫我看看附件,我已將巨集程式 copy進去,只是不知道.Range(Rng(1), Rng(2)).Resize(, 12).Copy之後如何做?
我不是要在其它的sheet    .Range("A1")中貼上值,而是要讓它在原設定的範圍貼上值,請幫幫忙.

TOP

回復 14# Hsieh

謝版大,
執行後沒有問題,但請指教一個範圍上的問題:
b的範圍這樣寫可以向右延伸12格....... b.Offset(, 12)
那如果a的範圍我想向上走11格,我改為以下,為什麼它不能執行?
.Range(a.Offset(, -11), b.Offset(, 12)) = .Range(a.Offset(, -11), b.Offset(, 12)).Value

TOP

回復 16# Hsieh
不好意思版大,
由"Shipped per SS:"向上11格(儲存格D4)在我的工作表上是沒有超出範圍,但我故意在D4放置了公式,修改為以下的樣子,
貼上值之後D4公式還在,所以  .Range(a.Offset(-11, 0)並沒有向上11格,我該怎麼辦?
如果你需要看檔案,我上傳了   VBA TEST.zip (35.29 KB)
            .Range(a.Offset(-11, 0), b.Offset(, 12)) = .Range(a.Offset(-11, 0), b.Offset(, 12)).Value

TOP

回復 18# Hsieh

謝謝版大,
原來是自已大意

TOP

回復 20# c_c_lai
結果看來是相同的.

TOP

        靜思自在 : 【行善要及時】行善要及時,功德要持續。如燒開水一般,未燒開之前千萬不要停熄火候,否則重來就太費事了。
返回列表 上一主題