我有下面的代码来格式化一张表。此工作簿中有多个工作表,因此我只想对第一个工作表执行操作。但是,如果我有除第一个激活之外的任何工作表(例如第二个),则代码会引发 1004 错误。我不确定为什么要指定和定义目标工作表。
Option Explicit
Sub SelectByJobNumber()
Dim LastRow As Long
Dim OperatingRow As Variant
Dim CountOfMatching As Long
Dim WB As Worksheet
Set WB = ThisWorkbook.Worksheets(1)
LastRow = WB.Cells(ActiveSheet.Rows.Count, "C").End(xlUp).Row
WB.Range(Cells(LastRow + 2, 19), Cells(LastRow + 2, 22)).Formula = "=" & "Sum(S74:S" & LastRow & ")"
WB.Range(Cells(LastRow + 2, 19), Cells(LastRow + 2, 22)).NumberFormat = "$#,##0.00"
For OperatingRow = 74 To LastRow
If WB.Cells(OperatingRow, 3) = WB.Cells(OperatingRow + 1, 3) Then
CountOfMatching = CountOfMatching + 1
Else
WB.Range(Cells(OperatingRow - CountOfMatching, 3), Cells(OperatingRow, 21)).BorderAround ColorIndex:=1, Weight:=xlMedium
WB.Cells(OperatingRow - CountOfMatching, 22) = Application.Sum(Range(Cells(OperatingRow - CountOfMatching, 21), Cells(OperatingRow, 21)))
If WB.Cells(OperatingRow - CountOfMatching, 22) = 0 Then
WB.Cells(OperatingRow - CountOfMatching, 23) = "Text for Zero Total Payable"
Else
WB.Cells(OperatingRow - CountOfMatching, 23) = "Not Paid"
End If
WB.Cells(OperatingRow - CountOfMatching, 22).NumberFormat = "$#,##0.00"
CountOfMatching = 0
End If
Next OperatingRow
If WB.Cells(LastRow + 2, 21) = WB.Cells(LastRow + 2, 22) Then
WB.Range(Cells(LastRow + 2, 21), Cells(LastRow + 2, 22)).BorderAround ColorIndex:=4, Weight:=xlMedium
Else
WB.Range(Cells(LastRow + 2, 21), Cells(LastRow + 2, 22)).BorderAround ColorIndex:=3, Weight:=xlMedium
End If
End Sub