【发布时间】:2020-04-20 05:00:10
【问题描述】:
我有这个宏来格式化我的 Excel 工作表。它会更改顶行的颜色并添加过滤器、冻结窗格等。
我有一个保存到的个人工作簿,因此我可以在我打开的任何 Excel 文件中使用它。
如果我从开发人员选项卡运行宏,它就可以工作。如果我尝试使用热键运行它,它不起作用。
当我使用热键时唯一起作用的是它会在第一行添加一个过滤器。
Sub FormatSheet()
'
' FormatSheet Macro
'
' Keyboard Shortcut: Ctrl+Shift+L
Worksheets(1).Select
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.349986266670736
.PatternTintAndShade = 0
End With
Selection.AutoFilter
With ActiveWindow
.SplitColumn = 0
.SplitRow = 1
End With
ActiveWindow.FreezePanes = True
Cells.Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Cells.EntireColumn.AutoFit
End Sub
【问题讨论】:
-
让我看看我是否明白。您说宏运行,但是当您使用热键时它的运行方式不同。对吗?
-
正确。不过,我将宏保存在另一个工作簿的模块中。我有一种感觉,这就是导致问题的原因。我希望宏可以处理我打开的所有 excel 文件,而不仅仅是一个工作簿。所以这就是我把它保存在那里的原因。
-
如果您使用两个工作簿,则需要使用显式对象引用。您的代码当前默认为当前处于活动状态的任何工作簿/工作表,这会产生奇怪的结果。