2015-08-21 51 views
0

我想将新列添加到Excel工作表中的表中。记录一个宏然后把它分配给一个按钮很容易,但是我的问题是表中的第一行有蓝色背景,当我点击按钮时,列中的第一个单元格有白色背景而不是蓝色,即使我当我录制宏时改变了它。我的代码:通过宏按钮将列添加到工作表表格

Sub AV() 
' 
' AV Macro 
' 

' 
ActiveSheet.Unprotect Password:="[email protected]" 
    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:="[email protected]" 
End Sub 

回答

1

试试这个,将listcolumns.add 2更改为所需的列。

Sub AV() 
' 
' AV Macro 
' 

' 
ActiveSheet.Unprotect Password:="[email protected]" 
    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:="[email protected]" 
End Sub 
1

我不认为你需要所有与宏记录的代码。如果您只是在表中添加一列,它应该复制现有表的颜色方案。

唯一需要确定的是“选择”是在一个有效的表中。下面的代码检查了这一点;如果选择不在有效表格中,则使用活动工作表上的最后一个表格;或者在没有表格的情况下返回错误消息。

其他替代品可以很容易地适应处理选择不在有效表内的情况。

另外,代码在表格末尾添加一列 - 如果需要,您可以为添加的列指定不同的位置。


Option Explicit 
Sub addColumn() 
    Dim LO As ListObject 
ActiveSheet.Unprotect Password:="[email protected]" 
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:="[email protected]" 

End Sub 

相关问题