2013-07-02 50 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.

相關問題