通过宏按钮将列添加到工作表

时间:2015-08-21 11:30:43

标签: excel vba excel-vba excel-2007

我想在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

2 个答案:

答案 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