我有一个excel表,我想为它添加一个列,然后命名标题。不知怎的,我的旧代码不再工作了,我不确定它是否与我有任何关系,使数据范围成为一个表(Name是Table1)。现在代码运行没有错误,但只添加空白列但没有添加标题。我按了 F8 ,看起来它跳过了选择部分并跳到了最后。
表格从A列到AG列指定。我曾经能够插入多个空白列并添加标题就好了。现在我不想指定单元格位置并为其分配单元格值(cell(1, 32).value ="Month"
),因为我希望能够灵活地添加我需要的许多列,并像以前一样分别添加标题。
Sub Ins_Blank_Cols_Add_Headers()
Columns("AF:AG").Insert Shift:=xlToRight
Columns("AF:AF").Cells(1, 1) = "<<NewHeader>>"
Columns("AG:AG").Cells(1, 1) = "<<NewHeader>>"
Dim cnter As Integer
LastCol = Cells(1, Columns.Count).End(xlToLeft).Column
cnter = 0
For i = 1 To LastCol
If Cells(1, i) Like "<<NewHeader>>*" Then
Select Case cnter
Case 0: Cells(1, i).Value = "Month"
Case 1: Cells(1, i).Value = "Year"
End Select
cnter = cnter + 1
End If
Next i
End Sub
答案 0 :(得分:1)
停止使用Range.Select
和Selection
,这对您有好处。
也始终使用完全合格的范围。
您的问题是,当您在表中插入列时,Excel会自动为其分配标题名称。
因此检查空的IF条件失败。因此,没有选择案例调用
更改此
Columns("AF:AF").Select
Selection.Insert Shift:=xlToRight
要
Columns("AF:AF").Insert Shift:=xlToRight
Columns("AF:AF").Cells(1, 1) = "<<NewHeader>>" ' In Table Can't set blank header so use a place holder.
同时更改If条件
If IsEmpty(Cells(1, I)) Then
要
If Cells(1, I) Like "<<NewHeader>>*" Then