簡體   English   中英

在 VBA excel 中復制/粘貼值范圍

[英]Copy/paste value a range in VBA excel

為了將干凈的 function 應用到我的 excel 表中的范圍 A1:B50,我編寫了下面的代碼。 但是,此代碼不會粘貼我復制的值。 知道有什么問題嗎? 謝謝!

Sub clean ()
Dim ws

Set ws = wb.Worksheets(1)
ws.Range("D1:D50") = "=CLEAN(RC[-3])"
ws.Range("E1:E50") = "=CLEAN(RC[-3])"
ws.Range("D1:E50").Copy
ws.Range("A1:B50").PasteSpecial Paste:=xlPasteValues
ws.Range("D:E").Delete Shift:=xlToLeft
End sub

清理范圍

微軟鏈接

Option Explicit

Sub cleanRange()
    
    Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containinig this code
    Dim ws As Worksheet: Set ws = wb.Worksheets(1)
    Dim rg As Range: Set rg = ws.Range("A1:B50")
    rg.Value = Application.Clean(rg.Value)
    
    ' These will not work:
    'rg.Value = WorksheetFunction.Clean(rg.Value)
    'rg.Value = WorksheetFunction.Clean(rg)

End Sub

Sub cleanRangeYourIdea()

    Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containinig this code
    Dim ws As Worksheet: Set ws = wb.Worksheets(1)
    ws.Range("D1:E50").Value = "=CLEAN(RC[-3])"
    ws.Range("A1:B50").Value = ws.Range("D1:E50").Value
    ws.Range("D:E").Delete Shift:=xlToLeft

End Sub

為您的 SUB 重新創建一個測試用例,您的代碼工作的最小更改包含在此代碼段中:

Sub clean()
Dim ws

Set ws = ThisWorkbook.Worksheets(1)
ws.Range("D1:D2") = "=CLEAN(RC[-3])"
ws.Range("E1:E2") = "=CLEAN(RC[-3])"
ws.Range("D1:E2").Copy
ws.Range("A1:B2").PasteSpecial Paste:=xlPasteValues
ws.Range("D:E").Delete Shift:=xlToLeft
End Sub

盡管如此,考慮到 VBA 是非常寬松的(特別是沒有 Option Explicit 並且遵循良好的代碼實踐),這里我提出了更多修復:

Option Explicit
Sub Clean1()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets(1)
    ws.Range("D1:D2").Formula = "=CLEAN(RC[-3])"
    ws.Range("E1:E2").Formula = "=CLEAN(RC[-3])"
    ws.Range("D1:E2").Copy
    ws.Range("A1:B2").PasteSpecial Paste:=xlPasteValues
    ws.Range("D:E").Delete Shift:=xlToLeft
    Set ws = Nothing
End Sub

兩種代碼都經過測試,並且可以正常工作。 直到此時,我還沒有觸及可以使用 vba 函數優化的邏輯,但依賴 excel 函數似乎還不錯

抱歉帖子的格式,我是新來的。

編輯:我刪除了一個粗體字 markdown。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM