VBA – 屏幕更新无法按预期工作
我已经保护了工作簿,用户只能在某些领域进行更改。 由于我们无法控制用户端的复制/粘贴格式。 我有下面的代码,这将帮助我保持目标格式。
我有用'Calibri'字体格式化的工作簿。 因此,如果用户将数据从其他任何格式复制到工作簿,它可以帮助我保留“Calibri”字体。
我关心的问题:当用户复制数据时,它会在代码被激活之前显示源格式,并更改我需要的格式。 我已closures屏幕更新,以加快您的macros代码。 但它是服务于我的目的。 是否有可能消除这个问题?
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
function正在创build一个问题
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
正如@约翰·科尔曼(John Coleman)所build议的,你只需要在你想要保留字体的工作表中使用这个代码,
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