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