将值粘贴到用户选择的单元格范围内,有时会在单元格之间显示空白

use*_*890 2 excel vba excel-vba

我想运行一个宏来复制多个选定单元格中的日期,有时它们是一个范围,但有时可能会选择单个单元格.所有单元格都在同一列中.我录制了一个执行此操作的宏,但每次都复制在相同的范围或单元格中.我想将它复制到我选择的单元格中 - 每次都会有所不同.

这是代码

Macro1 Macro
' Test copy range
'
' Keyboard Shortcut: Ctrl+e
'
    Range("$AD$10").Select
    Selection.Copy
    Range("C10").Select
    ActiveWindow.SmallScroll Down:=7
    Range("C10,C12,C16:C21").Select
    Range("C16").Activate
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
End Sub
Run Code Online (Sandbox Code Playgroud)

Sid*_*out 5

我几乎不推荐这个,但如果你想把它粘贴在当前的选择中,那么试试这个

Option Explicit

Sub Sample()
    With Sheets("Sheet1")
        .Range("$AD$10").Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)

如果使用上述方法,请确保执行正确的错误处理.

或者,使用a InputBox()选择范围并将其粘贴到其中.看这个例子

Option Explicit

Sub Sample()
    Dim Ret As Range

    With Sheets("Sheet1")
        On Error Resume Next
        Set Ret = Application.InputBox(Prompt:="Please select a range where you want to paste", Type:=8)
        On Error GoTo 0

        If Not Ret Is Nothing Then
            .Range("$AD$10").Copy

            Ret.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        End If
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)

屏幕截图

在此输入图像描述