Excel 在多个工作表上循环,查找最后一个空白单元格,并放置“最大日期”标题&;L:AD范围内的公式

Excel 在多个工作表上循环,查找最后一个空白单元格,并放置“最大日期”标题&;L:AD范围内的公式,excel,vba,Excel,Vba,我对VBA非常陌生,并尝试将我的一项重复任务自动化。我在一个工作簿中有多个工作表,范围从L到动态列数(我说动态列数,因为有些工作表有2列,有些工作表有14列),我有不同的日期。我需要转到最后一个空白单元格,将列标题设置为“max date”,并从日期范围中找出max date 我自己也尝试过这个脚本,但出现了错误 Worksheets(1).Activate Dim singlesheet As Worksheet Application.ScreenUpdating = False For

我对VBA非常陌生,并尝试将我的一项重复任务自动化。我在一个工作簿中有多个工作表,范围从L到动态列数(我说动态列数,因为有些工作表有2列,有些工作表有14列),我有不同的日期。我需要转到最后一个空白单元格,将列标题设置为“max date”,并从日期范围中找出max date

我自己也尝试过这个脚本,但出现了错误

Worksheets(1).Activate
Dim singlesheet As Worksheet
Application.ScreenUpdating = False

For Each singlesheet In Worksheets
    singlesheet(Range("A1", Range("A1").End(xlDown))).Rows.Count
    Range("A1").Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell.Value = "Max date"
Next singlesheet
我得到一个运行时错误438

对象不支持此属性或方法

为了在页眉行中,在每张工作表的右栏写下“Max Date”,您可以使用下面的代码

正如在SO中多次提到的,您应该避免使用
Activate
ActiveCell
Select

修改代码

为了在页眉行中,在每张工作表的右栏写下“Max Date”,您可以使用下面的代码

正如在SO中多次提到的,您应该避免使用
Activate
ActiveCell
Select

修改代码


尝试以下代码:

Sub fnd_max()

Dim singlesheet As Worksheet

For Each singlesheet In Worksheets

    lr = LastRow(singlesheet)
    lc = LastCol(singlesheet)

    With singlesheet
    If lc > 0 And lr > 0 Then
        singlesheet.Activate
        .Cells(1, lc + 1).Value = "Max Header"
        .Cells(2, lc + 1).formula = "=MAX(" & .Range(Cells(2, 12), Cells(2, lc)).Address(0, 0) & ")"
        .Cells(2, lc + 1).AutoFill Destination:=.Range(Cells(2, lc + 1), Cells(lr, lc + 1))
    End If
    End With

Next

End Sub

Function LastRow(Sh As Worksheet)
    On Error Resume Next
    LastRow = Sh.Cells.Find(What:="*", _
                            After:=Sh.Range("A1"), _
                            Lookat:=xlPart, _
                            LookIn:=xlFormulas, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlPrevious, _
                            MatchCase:=False).row
    On Error GoTo 0
End Function

Function LastCol(Sh As Worksheet)
    On Error Resume Next
    LastCol = Sh.Cells.Find(What:="*", _
                            After:=Sh.Range("A1"), _
                            Lookat:=xlPart, _
                            LookIn:=xlFormulas, _
                            SearchOrder:=xlByColumns, _
                            SearchDirection:=xlPrevious, _
                            MatchCase:=False).Column
    On Error GoTo 0
End Function

尝试以下代码:

Sub fnd_max()

Dim singlesheet As Worksheet

For Each singlesheet In Worksheets

    lr = LastRow(singlesheet)
    lc = LastCol(singlesheet)

    With singlesheet
    If lc > 0 And lr > 0 Then
        singlesheet.Activate
        .Cells(1, lc + 1).Value = "Max Header"
        .Cells(2, lc + 1).formula = "=MAX(" & .Range(Cells(2, 12), Cells(2, lc)).Address(0, 0) & ")"
        .Cells(2, lc + 1).AutoFill Destination:=.Range(Cells(2, lc + 1), Cells(lr, lc + 1))
    End If
    End With

Next

End Sub

Function LastRow(Sh As Worksheet)
    On Error Resume Next
    LastRow = Sh.Cells.Find(What:="*", _
                            After:=Sh.Range("A1"), _
                            Lookat:=xlPart, _
                            LookIn:=xlFormulas, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlPrevious, _
                            MatchCase:=False).row
    On Error GoTo 0
End Function

Function LastCol(Sh As Worksheet)
    On Error Resume Next
    LastCol = Sh.Cells.Find(What:="*", _
                            After:=Sh.Range("A1"), _
                            Lookat:=xlPart, _
                            LookIn:=xlFormulas, _
                            SearchOrder:=xlByColumns, _
                            SearchDirection:=xlPrevious, _
                            MatchCase:=False).Column
    On Error GoTo 0
End Function

你在哪一行得到错误<代码>单页(范围(“A1”,范围(“A1”).End(xlDown))).Rows.Count?在哪一行出现错误<代码>单页(范围(“A1”,范围(“A1”).End(xlDown))).Rows.Count?是。在那一行中出错..我将尝试这个code@Stanley在我的代码的哪一行中出现错误?代码不起作用。它没有在最后一个空白列中填充“Max date”,而是给出了一条错误消息“error.worksheet is empty”Yes。在那一行中出错..我将尝试这个code@Stanley在我的代码的哪一行中出现错误?代码不起作用。它没有在最后一个空白列中填充“Max date”,而是给出一条错误消息“error.worksheet is empty”