我正在使用Excel宏,试图减轻负载,所以我不必编写这么多代码。
在第1单元,我有以下内容:
Sub SendData()
Dim result As Long, firstrow As Long, lastrow As Long
Dim SheetName As Worksheet
Call BaseCap1("Sheet8")
End Sub
在第2单元中,我有以下内容:
Sub BaseCap1(SheetName)
Sheet2.[A1:AC1901].AutoFilter 1, "1"
Sheet2.[A1:AC1901].AutoFilter 3, "Base Capital"
Sheet2.[A1:AC1901].AutoFilter Field:=10, Criteria1:=Array("Completed"), Operator:=xlFilterValues
Sheet2.[E4:E1901,C4:C1901,A4:A1901,J4:J1901,G4:G1901,H4:H1901,I4:I1901,Y4:Y1901].Copy Sheet12.[A1]
With ThisWorkbook.Sheets("DO NOT USE")
lastrow = .Range("A" & .Rows.Count).End(xlUp).Row
firstrow = 1
SheetName.Range("A3").Value = "Facility Base Capital"
If lastrow = "1" Then
If IsEmpty(Sheet12.Range("A1").Value) Then
SheetName.Range("B3").Value = "0"
Else
SheetName.Range("B3").Value = lastrow
End If
Else
SheetName.Range("B3").Value = lastrow
End If
SheetName.Range("C3").Value = "Completed"
SheetName.Range("D3").Value = Application.WorksheetFunction.Sum(.Range("D" & firstrow & ":D" & lastrow))
SheetName.Range("E3").Value = Application.WorksheetFunction.Sum(.Range("E" & firstrow & ":E" & lastrow))
SheetName.Range("F3").Value = Application.WorksheetFunction.Sum(.Range("F" & firstrow & ":F" & lastrow))
End With
在当前状态下,我一直收到错误 - 运行时错误'''':需要对象
我尝试了几种不同的方法,包括尝试将SheetName变量传递给另一个稍有不同错误的变量。
我很感激任何帮助解决这个问题,以便它可以工作。
提前致谢!
答案 0 :(得分:1)
SheetName是一个字符串(尽管你还没有这样声明)。它没有您尝试使用的任何属性。您需要对NAME为SheetName的工作表的引用。
Sub BaseCap1(SheetName as String) '加上这个:
Dim oSheet As Worksheet
Set oSheet = ActiveWorkbook.Worksheets(Sheetname)
然后在代码的其余部分替换oSheet for Sheetname。