VBA粘贴数据而不改变格式

我有一个启用macros的受保护的工作簿,用户只能在所有工作表上编辑特定的字段或行(150到200)。

问题是我无法在可编辑字段上设置格式,所以当用户在字段上复制任何内容时,它将采用源格式,并使表格变得混乱。

我试图使用以下,但没有帮助。 请build议。

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

给这个镜头:

 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 

它通过将新值(复制或input到单元格中的值)存储到数组中,然后执行撤消操作(这将删除操作(以及任何不需要的格式)),然后仅将值(从存储的数组中)范围。

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

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

应该复制这些值而不复制初始范围的格式。