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