VBA在复制粘贴期间保持格式

时间:2017-02-27 15:38:41

标签: excel vba excel-vba

我有一个启用了宏的工作簿(受保护的工作表)。 允许用户向已解锁的单元格提供输入。

这里的问题是当用户从其他应用程序复制粘贴数据时,它将覆盖现有工作表上使用的格式,这会造成麻烦。

即使用户复制/粘贴,是否可以保留格式?

2 个答案:

答案 0 :(得分:0)

1)为工作表上使用的各种格式创建自定义样式,并且(如果可能的话)名称范围为"样式"

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("STYLE")).Count = Target.Count Then
    Target.Style = "STYLE"
End If

End Sub

此代码将检查,如果更改的单元格是"内部"风格范围。如果所有更改的单元格都在样式范围内 - 应用样式。如果保持范围命名与样式命名一致,则可以使用循环来完成。

答案 1 :(得分:0)

以下代码对我有用。它可以识别是否有人粘贴到单元格区域中,撤消粘贴并重新粘贴与目标格式匹配的

If Not Intersect(Target, Range("A1:D12")) Is Nothing Then
    If Application.CommandBars("Standard").Controls("&Undo").Enabled = True Then
        Dim UndoString As String
        UndoString = Application.CommandBars("Standard").Controls("&Undo").List(1)
        If Left(UndoString, 5) = "Paste" Then
            Application.EnableEvents = False
            Application.Undo
            Target.Select
            ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True
            Application.EnableEvents = True
        End If
    End If
End If