【问题标题】:How do I paste destination format in VBA, using PasteSpecial and Size?如何使用 PasteSpecial 和 Size 在 VBA 中粘贴目标格式?
【发布时间】:2019-06-27 03:44:21
【问题描述】:

我想 cltr + v 并执行一个代码,尽可能地粘贴我的目标格式

好吧,我粘贴特殊的值,然后重新格式化这些值

但我在 ActiveCell.PasteSpecial (xlPasteValues) 行上出现错误,“Range 类的PasteSpecial 方法失败 1004 运行时错误”

我想让这段代码整洁,但我遇到了一些麻烦。

此外,由于某种原因(尽管修剪、右对齐和名称“calibri”工作正常),粘贴值的 .Size 不能(“对象不支持此属性”错误)

有什么想法吗?谢谢!

Sub PasteWithDestinationFormatting()

     ActiveCell.PasteSpecial (xlPasteValues)

End Sub


Sub TrimAndFit()

    Dim r As Range


    Call PasteWithDestinationFormatting



    With Application.WorksheetFunction

        For Each r In Intersect(Selection, ActiveSheet.UsedRange)

            r.Value = .Trim(r.Value)

            r.HorizontalAlignment = xlHAlignRight

            r.Name = "Calibri"

            r.Size = 11

        Next r

    End With

End Sub

【问题讨论】:

    标签: excel vba trim paste


    【解决方案1】:

    VBA 智能感知应在此处提示您。如果您开始在 VBE 中输入有问题的行,您会看到 Size 不是 Range object 的可用属性(链接到 dox)。

    假设您要将字体大小设置为 11,您需要:

    r.Font.Size = 11
    

    【讨论】:

    • 谢谢!粘贴特殊值时的错误怎么样,...我从源格式复制,我不想转移到我的目的地,有什么好主意吗?
    • xlPasteValues脱掉()
    • 改为ActiveCell.PasteSpecial (xlPasteValues) 试试ActiveCell.PasteSpecial paste:= XlPasteValues
    • 无法重现该问题,并且 tbh 不知道这是您需要帮助的问题(您应该尽量避免提出两个或更多不同的问题!)。该语法应该有效。除非有错字或换位错误,否则它是完全正确的。
    • 剪贴板中有任何内容吗?我没有看到对范围 .Copy 的任何调用。您的剪贴板中似乎没有任何内容。
    【解决方案2】:

    试试:

    Option Explicit
    
    Sub test()
    
        With ThisWorkbook.Worksheets("Sheet1")
            'Copy value & formatting from cell A1 to A2
            .Range("A1").Copy .Range("A2")
        End With
    
    End Sub
    

    结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多