Excel-VBA:将可见单元格复制粘贴到可见单元格

问题描述 投票:2回答:1

我正在寻找一个宏来复制一张纸中选择的可见(即非隐藏,未过滤掉)单元格的格式,只复制到另一张纸张中选择的可见单元格中。

我的VBA有点生疏,所以如果有人可以帮助我自己写的代码,或者提供一些替代代码,我会非常感激。

这是我当前的代码(带有注释掉的代码,有人建议我取消注释该代码):

Sub Copy_Paste_Visible()



    Set CopyRng = Application.Selection
    CopyRng = CopyRng.SpecialCells(xlCellTypeVisible).Copy' _
        'Destination:=Range("A1").Offset(ColumnOffset:=1)



    Set PasteRng = Application.InputBox("Paste to :", xTitleId, Type:=8)

    PasteRng = PasteRng.SpecialCells(xlCellTypeVisible) '.Copy _
         'Destination:=Range("A11").Offset(ColumnOffset:=1)

    'CopyRng.Copy
    PasteRng.Parent.Activate
    'PasteRng.Activate
    PasteRng.PasteSpecial xlPasteFormats
    Application.CutCopyMode = False

End Sub

使用此代码,在线

PasteRng.Parent.Activate

我收到以下错误消息:

enter image description here

如果任何人能够提供任何输入,那将是伟大的。

excel vba excel-vba
1个回答
1
投票

试试这个:

 Public Sub CopyOnlyVisibleCells()

    Dim rangeToCopy     As Range

    Set rangeToCopy = Selection
    rangeToCopy.SpecialCells(xlCellTypeVisible).Copy
    Worksheets(2).Range(rangeToCopy.Address).PasteSpecial xlPasteAll
    Application.CutCopyMode = False

End Sub

它几乎需要选择,并将可见单元格复制到Worksheets(2)中选择的相同地址。您可以使用它来使其更好地工作。


关于错误 - 如果你试图激活PasteRng的父范围,那么很可能你的意思是工作表。因此这样的事情应该有效:

Worksheets(PasteRng.Parent.Name).Activate

一般来说,使用SelectActivate被认为是一种不好的做法 - How to avoid using Select in Excel VBA

© www.soinside.com 2019 - 2024. All rights reserved.