【问题标题】:Excel-VBA: Copy-Paste formatting of visible cells to visible cellsExcel-VBA:将可见单元格的格式复制粘贴到可见单元格
【发布时间】:2018-03-05 10:14:34
【问题描述】:

我正在寻找编写一个宏,以仅将一个工作表中所选内容的可见(即非隐藏、未过滤掉)单元格的格式复制到另一工作表中所选内容的可见单元格中。

我的 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

我收到以下错误消息:

如果有人能够提供任何意见,那就太好了。

【问题讨论】:

    标签: vba excel


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      • 1970-01-01
      • 2015-07-26
      • 2012-12-19
      • 1970-01-01
      相关资源
      最近更新 更多