对象variables未设置(错误91)
我对VBA的世界相当陌生,并且负责编写一些代码,这些代码将逐步遍历A列中的公司名称,当find该名称时,代码会将相关行复制并粘贴到新创build的工作簿中。 它应该继续到下一个名字等等。 在testing代码工作,但我已经进入今天,我现在正在rngG.Select行上的对象variables错误
任何人都可以帮助,因为我一直在看这个一个小时,现在是完全困惑我吗?
Sub CrystalUtilitesLtd() Dim Wk As Workbook Dim c As Range Dim rngG As Range Application.DisplayAlerts = False For Each c In Intersect(ActiveSheet.UsedRange, Columns("a")) If c = "3rd Party - Crystal Utilities Ltd" Then If rngG Is Nothing Then Set rngG = c.EntireRow Set rngG = Union(rngG, c.EntireRow) End If Next c rngG.Select Selection.Copy Workbooks.Open "I:\Data\OMR8293\General\Ops Team\Customer Transfer Team\TPI Registration Reporting\TPI Registration Data Template1.xlsx" Range("A2").Select Selection.PasteSpecial xlPasteValues Range("A1:AG1").EntireColumn.AutoFit ActiveWorkbook.SaveAs ("I:\Data\OMR8293\General\Ops Team\Customer Transfer Team\TPI Registration Reporting\Crystal Utilities Ltd\Registrations_1010112503_" _ & Format(Now(), "YYYYMMDD") & ".xlsx") ActiveWorkbook.Close Call EnergyAnalystUK Application.DisplayAlerts = True End Sub
replace以下两行代码…
rngG.Select Selection.Copy
用这些线
If Not rngG Is Nothing Then rngG.Copy Else MsgBox "No range to copy.", vbExclamation Exit Sub End If
原因是如果 c <> "3rd Party - Crystal Utilities Ltd"
那么rngG
对象从来没有被赋予一个范围,所以它仍然是Nothing
,因为你不能做Nothing.Select
你将得到一个Object Variable或With块未设置错误。
通过上述更改,您的完整代码将如下所示…
Sub CrystalUtilitesLtd() Dim Wk As Workbook Dim c As Range Dim rngG As Range Application.DisplayAlerts = False For Each c In Intersect(ActiveSheet.UsedRange, Columns("a")) If LCase(VBA.Trim(c)) = "3rd party - crystal utilities ltd" Then If rngG Is Nothing Then Set rngG = c.EntireRow Set rngG = Union(rngG, c.EntireRow) End If Next c If Not rngG Is Nothing Then rngG.Copy Workbooks.Open "I:\Data\OMR8293\General\Ops Team\Customer Transfer Team\TPI Registration Reporting\TPI Registration Data Template1.xlsx" Range("A2").Select Selection.PasteSpecial xlPasteValues Range("A1:AG1").EntireColumn.AutoFit ActiveWorkbook.SaveAs ("I:\Data\OMR8293\General\Ops Team\Customer Transfer Team\TPI Registration Reporting\Crystal Utilities Ltd\Registrations_1010112503_" _ & Format(Now(), "YYYYMMDD") & ".xlsx") ActiveWorkbook.Close Else MsgBox "No range to copy.", vbExclamation End If Call EnergyAnalystUK Application.DisplayAlerts = True End Sub