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

谢谢你,里卡德,我很感激