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