首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只粘贴背景/数字格式和合并单元格的值

只粘贴背景/数字格式和合并单元格的值
EN

Stack Overflow用户
提问于 2021-01-01 03:41:01
回答 3查看 65关注 0票数 0

我试图复制特定区域的内容,并将当前区域复制回摘要页。

不幸的是,我在将数据粘贴回摘要表时遇到了一些问题。

期望结果

将以下内容从复制的区域粘贴到摘要页:

  1. 维护合并单元格
  2. 维护单元格高亮颜色
  3. 单元格值

拷贝源

源区域内有一些公式来收集一些表数据。见下图:

现在,每当我通过我的vba代码粘贴选定的区域时,

代码语言:javascript
复制
TitleBlockRange.CurrentRegion.Copy
nextEmptyCell.PasteSpecial (xlPasteFormats)       
nextEmptyCell.PasteSpecial (xlPasteValues)

我得到以下错误:

我已经尝试了我能想到的PasteSpecial()的每一个变体!

这里有没有我错过的方法?我应该用什么方法?

提前谢谢大家!

EN

回答 3

Stack Overflow用户

发布于 2021-01-01 08:35:04

合并细胞的诅咒。但是如果你被它们困住了,下面的代码就会复制所有的东西--只是速度更慢。

代码语言:javascript
复制
Sub CopyEverything()
    ' 153
    
    Dim SrcRng      As Range        ' Source range
    Dim Target      As Range        ' destination range
    Dim i           As Long         ' loop counter: index of SrcRng.Cells
    
    Set SrcRng = ActiveSheet.Cells(1, 1).CurrentRegion
    Set Target = Worksheets("Sheet2").Cells(10, 1) _
                .Resize(SrcRng.Rows.Count, SrcRng.Columns.Count)
    
    Application.ScreenUpdating = False
    With SrcRng
        .Copy
        Target.PasteSpecial xlPasteFormats
    
        For i = 1 To .Cells.Count
            With .Cells(i)
                If .Address = .MergeArea.Cells(1).Address Then
                    Target.Cells(i).Value = .Value
                End If
            End With
        Next i
    End With
    With Application
        .CutCopyMode = False
        .ScreenUpdating = True
    End With
End Sub

记住以下几点。

要复制行高,必须复制整行。若要复制列宽,必须复制整个列。

  • 必须复制整列。

如果可以复制整个行或整个列或整个工作表,上述任务将更容易完成。但是,如果您部署了上面的代码,那么您已经具备了复制单个设置的基础设施,并且添加对您非常重要的维度的传输不应该超过几行。

票数 0
EN

Stack Overflow用户

发布于 2021-01-01 08:35:46

据我所知,没有办法复制完整的范围和粘贴以相同的格式(合并的单元格,高亮颜色和值)。要满足要求,可以分别复制和粘贴合并的单元格和未合并的单元格.

对于合并的单元格,请使用下面的代码

代码语言:javascript
复制
Range("B4").MergeArea.Copy

range("").Pastespecial

在没有任何条件的情况下使用Pastespecial会粘贴any格式、any值。

票数 0
EN

Stack Overflow用户

发布于 2021-01-03 19:58:28

因此,如果你使用:

代码语言:javascript
复制
nextEmptyCell.PasteSpecial (xlPasteAll  
nextEmptyCell.PasteSpecial (xlPasteValues)

它将引发错误'1004‘,如原始帖子所示,但如果将其更改为以下内容:

代码语言:javascript
复制
nextEmptyCell.PasteSpecial (xlPasteAll)
nextEmptyCell.PasteSpecial (xlPasteValuesAndNumberFormats)

我们能够覆盖来自xlPasteAll的公式

现在唯一的其他问题是,当我们到达nextEmptyCell.PasteSpecial (xlPasteValuesAndNumberFormats)代码行时,下面的“弹出”会带来麻烦。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65527150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档