我有受保护的工作簿,允许用户仅在某些字段上进行更改。因为我们无法从用户端控制复制/粘贴格式。我有以下代码,可以帮助我保持目标格式。
我的工作簿格式为Font'Calibri'。因此,如果用户将数据从任何其他格式复制到工作簿上,它可以帮助我保留“Calibri”字体。
我担心:当用户复制数据时,会在代码激活之前显示源格式,并更改我需要的格式。我已关闭屏幕更新以加快您的宏代码。但它符合我的目的。是否有可能消除这个问题?
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim vNewValues As Variant
NewValues = Target
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Undo
Target = NewValues
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
我尝试更新代码如下。 .Undo
函数正在创建问题
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim vNewValues As Variant
NewValues = Target
Application.EnableEvents = False
Target.Font.Name = "Calibri"
Target.Font.Size = 11
Target.HorizontalAlignment = xlLeft
Target.VerticalAlignment = xlTop
Target.WrapText = True
Application.Undo
Target = NewValues
End Sub
答案 0 :(得分:2)
正如@John Coleman建议您只需要在要保留字体校准的工作表中使用此代码,
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Font.Name = "Calibri"
End Sub
如果您希望将此代码用于工作簿中的所有工作表,请将此代码粘贴到工作簿中
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Target.Font.Name = "Calibri"
End Sub
@Sady,这是您的更新代码
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
Target.Font.Name = "Calibri"
Target.Font.Size = 11
Target.HorizontalAlignment = xlLeft
Target.VerticalAlignment = xlTop
Target.WrapText = True
Application.EnableEvents = True
End Sub