2013-07-02 18 views
0

我有一个需要使用宏自动化的任务,并且我已经编写了代码来完成它;但是,我的代码无法成功完成任务。因此,我现在需要你的帮助。Excel中的VBA - 如何在每个表格前自动添加一个空白列

请下载我的样本文件,其中包括3张:“start_1”,“start_2”和“结果”。 “start_1”和“start_2”是相同的。我需要在这两张表格中“开始”格式化表格,以便它们看起来像“结果”表格。

http://www.mediafire.com/download/n8dwli8v55lw9gl/add_a_blank_column_before_each_table.xls

详细,这里都是需要自动执行任务:

  • 在顶部添加1个空行(我已经做到了)
  • 冻结标题行(我已经做到了)
  • 这是我无法做到的:在每张表格前添加1个空白栏。添加的列必须没有填充颜色并且根本没有边框。 (这里的每个表格都由顶部标题行中的合并单元格标识)
  • 另请告诉我如何确定包含数据的最后一列和包含数据的最后一行,以便隐藏空白外部空间。

非常感谢您的帮助。

下面是我的代码(的ThisWorkbook模块中):

Option Explicit 

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
Dim bScrUpdate As Boolean 
Dim ws As Worksheet 
Dim rng As Range 

Application.EnableCancelKey = xlDisabled 'disable ESC key 
bScrUpdate = Application.ScreenUpdating 
If bScrUpdate = True Then Application.ScreenUpdating = False 
Application.DisplayAlerts = False 

For Each ws In ThisWorkbook.Worksheets 
If ws.Name <> "result" Then 
ws.Select 
Rows("1:1").Insert Shift:=xlDown 

Range("A4").Select 
ActiveWindow.FreezePanes = True 

For Each rng In Rows("2:2").Cells 
If rng.MergeCells Then 
rng.MergeArea.Cells(1, 1).Select 
Selection.Offset(-1, 1).EntireColumn.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
End If 
Next rng 
End If 
Next ws 

Application.DisplayAlerts = True 
If Not Application.ScreenUpdating = bScrUpdate _ 
Then Application.ScreenUpdating = bScrUpdate 
Application.EnableCancelKey = xlInterrupt 'enable ESC key 
End Sub 

回答

0

要添加列,并清除其所有的格式,你可以做这样的事情:

Sub InsertCol() 
    Columns(1).Insert 
    Columns(1).ClearFormats ' might be unnecessary 
End Sub 

如果你想确定最后一行/列看看this question.

相关问题