我想在Excel工作表中向表中添加新列。记录宏然后将其分配给按钮很容易,但是我的问题是表格中的第一行有蓝色背景,当我点击按钮时,列中的第一个单元格有白色背景而不是蓝色,即使我在录制宏时更改了它。我的代码:
Sub AV()
'
' AV Macro
'
'
ActiveSheet.Unprotect Password:="P@ssw0rd"
Range("Table5[Column53]").Select
Selection.ListObject.ListColumns.Add
Range("H14").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight2
.TintAndShade = -0.499984740745262
.PatternTintAndShade = 0
End With
Range("H15").Select
ActiveSheet.Protect Password:="P@ssw0rd"
End Sub
答案 0 :(得分:1)
尝试此操作,将listcolumns.add 2
更改为所需的列。
Sub AV()
'
' AV Macro
'
'
ActiveSheet.Unprotect Password:="P@ssw0rd"
ActiveSheet.ListObjects("Table5").ListColumns.Add 2
Range("H14").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight2
.TintAndShade = -0.499984740745262
.PatternTintAndShade = 0
End With
Range("H15").Select
ActiveSheet.Protect Password:="P@ssw0rd"
End Sub
答案 1 :(得分:1)
我认为您不需要使用宏记录的所有代码。如果只是向表中添加一列,它应该复制现有表的颜色方案。
唯一可以确定的是"选择"在一张有效的表格中。下面的代码检查;如果Selection不在有效表中,则它使用Active Sheet上的最后一个表;如果没有表格,则返回错误消息。
可以轻松容纳其他替代方案来处理选择不在有效表格内的情况。
此外,代码会在表格的末尾添加一列 - 如果需要,您可以为添加的列指定不同的位置。
Option Explicit
Sub addColumn()
Dim LO As ListObject
ActiveSheet.Unprotect Password:="P@ssw0rd"
Set LO = Selection.ListObject
If LO Is Nothing Then
With ActiveSheet
Select Case .ListObjects.Count
Case 0
MsgBox "No ListObjects on active sheet"
Exit Sub
Case Is > 0 'select the last table on the sheet
Set LO = .ListObjects(.ListObjects.Count)
End Select
End With
End If
LO.ListColumns.Add
'Optional to protect the sheet again, if you want
'ActiveSheet.Protect Password:="P@ssw0rd"
End Sub