Excel宏:将选定区域剪切后仅粘贴数值

编程语言 2026-07-12

在Microsoft Excel中,我想先选定一个区域,剪切它,然后把该区域的值仅粘贴到另一个区域。

虽然在复制时有“粘贴特殊”选项可以粘贴“值”,但剪切时似乎没有这样的选项。

我尝试写两个Excel宏,一个用于剪切,一个用于粘贴特殊:

Sub CopyAndErase()
    Selection.Copy
    Selection.Value = Empty
End Sub

Sub PasteValuesOnly()
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End Sub

当我选择一个区域,调用 CopyAndErase,再选择另一个单元格,并调用 PasteValuesOnly 时,它会粘贴空值。

看起来 Selection.Copy 不是把内容复制到剪贴板,而是复制对单元格的引用,然后 Selection.PasteSpecial 将引用单元格在那时的内容粘贴过去。

解决方案

这个问题的一个可行解决方案之一。你需要输入目标单元格的地址。

Sub CutPasteValues()
    Dim src As Range
    Set src = Selection
    Selection.Copy
    Dim dest As Range
    Set dest = Range(InputBox("Enter destination address (1st cell)"))
    dest.PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
    src.Clear
End Sub

如果你愿意使用全局变量,可以使用这样的代码:

Public data As Variant, rows As Long, cols As Long
Sub MyCut()
    data = Selection
    rows = Selection.rows.Count
    cols = Selection.Columns.Count
    Selection.Clear
End Sub
Sub MyPaste()
    Selection.Resize(rows, cols) = data
End Sub
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章