[英]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.