VBA将数据粘贴到单元格而不更改格式

时间:2017-10-12 14:30:53

标签: excel vba excel-vba

我有一个启用宏的受保护工作簿,允许用户在所有工作表上仅编辑某些字段或行(150到200)。

令人担忧的是我无法在可编辑字段上设置格式,因此当用户在字段上复制任何内容时,它会采用源格式并使页面混乱。

我尝试使用以下内容,但这并没有帮助。请建议。

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    On Error Resume Next
    Target.PasteSpecial xlPasteValues
    Application.CutCopyMode = True
End Sub

2 个答案:

答案 0 :(得分:3)

试一试:

Option Explicit 

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    If Target.Row >= 150 And Target.Row <= 200 Then 

        Dim vNewValues as Variant
        NewValues = Target

        Application.EnableEvents = False
        Application.Undo

        Target = NewValues

        Application.EnableEvents = true

  End If

End Sub

它的工作原理是将新值(复制或输入到单元格中)存储到数组中,然后执行撤消操作,这将删除操作(以及任何不需要的格式化),然后只放置值(来自存储的数组)进入范围。

If条件可能需要根据您的实际要求进行调整。

答案 1 :(得分:1)

Range.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks

只应复制值而不从初始范围复制格式。