Excel 宏,用于清除最后一个标题名运行后但未清除的所有列
我正在尝试清除最后一个标题行之后的所有列 宏运行,但没有清除,我已经玩了一段时间的语法,我没有得到它 谢谢Excel 宏,用于清除最后一个标题名运行后但未清除的所有列,excel,vba,Excel,Vba,我正在尝试清除最后一个标题行之后的所有列 宏运行,但没有清除,我已经玩了一段时间的语法,我没有得到它 谢谢 Sub ClearColumnsAfterLastHeader() Dim ws As Excel.Worksheet Dim hNames As Variant Dim cell Set ws = ActiveWorkbook.Sheets("Finished") hNames = ws.Range("A1:R1").Value For Each cell In hNames I
Sub ClearColumnsAfterLastHeader()
Dim ws As Excel.Worksheet
Dim hNames As Variant
Dim cell
Set ws = ActiveWorkbook.Sheets("Finished")
hNames = ws.Range("A1:R1").Value
For Each cell In hNames
If IsEmpty(cell) Then
cell.EntireColumn.ClearContents
End If
Next cell
End Sub
代码的主要问题是
hNames
是变量数组,而不是范围
。当您在hNames中的每个单元格的数组中循环时,变量单元格
指的是数组元素,而不是对应的单元格。因此,您不能使用cell.entireclumn.ClearContents
,因为cell
不是范围
,而是变量
根据我对问题的理解,您需要确定第一行(标题行)中最后填充的单元格,并清除最后填充标题右侧所有列的内容。在这种情况下,请尝试下面的代码:
Sub ClearColumnsAfterLastHeader()
Dim ws As Excel.Worksheet
Dim lastHeaderColumn As Long
Set ws = ActiveWorkbook.Sheets("Finished")
With ws
'determine last filled cell in first row
lastHeaderColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
'get of all cells to the right and down and clear contents
.Range(.Cells(1, lastHeaderColumn + 1), _
.Cells(.Rows.Count, .Columns.Count)).ClearContents
End With
End Sub
你就不能这样做吗
Sub ClearStuff()
Dim ws As Worksheet
Dim LastCell As Range, ClearRange As Range
Set ws = ActiveWorkbook.Sheets("Finished")
Set LastCell = ws.Cells(1, ws.Columns.Count)
Set ClearRange = Range(LastCell.End(xlToLeft).Offset(0, 1), LastCell)
ClearRange.EntireColumn.ClearContents
End Sub
谢谢你,里卡德,我很感激