Excel宏:将选定区域剪切后仅粘贴数值
在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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。