处理范围表不存在的VBA时出错

处理范围表不存在的VBA时出错,vba,error-handling,Vba,Error Handling,我使用的是XL2007-Windows7 在下面的代码中,我需要一个错误处理元素。 rngburndown范围内的某些值不作为工作表存在,我需要VBA跳过这些单元格,并将作为工作表存在的行复制到匹配工作表名称中的下一个可用行 Sub Retrieve_Forecasts() Dim objWorksheet As Worksheet Dim rngBurnDown As RANGE Dim rngCell As RANGE Dim strPasteToSheet As String Dim o

我使用的是XL2007-Windows7

在下面的代码中,我需要一个错误处理元素。 rngburndown范围内的某些值不作为工作表存在,我需要VBA跳过这些单元格,并将作为工作表存在的行复制到匹配工作表名称中的下一个可用行

Sub Retrieve_Forecasts()

Dim objWorksheet As Worksheet
Dim rngBurnDown As RANGE
Dim rngCell As RANGE
Dim strPasteToSheet As String
Dim objNewSheet As Worksheet
Dim rngNextAvailbleRow As RANGE

'DEFINE SOURCE WORKSHEET
Set objWorksheet = ThisWorkbook.Worksheets("Forecasts")

'DEFINE LIST OF FORECASTS - INCLUDING VALUES WHICH MAY NOT EXIST AS WORKSHEETS
Set rngBurnDown = objWorksheet.RANGE("A2:A" & objWorksheet.Cells(Rows.Count, "A").End(xlUp).Row)

'LOOP THROUGH RANGE
For Each rngCell In rngBurnDown.Cells

    objWorksheet.Select

If rngCell.Value <> "" Then
'SELECT ROW
rngCell.EntireRow.Select

'COPY
Selection.Copy

'FIND AND PASTE WHERE WORKSHEET NAME MATCHES FORECAST LIST

Set objNewSheet = ThisWorkbook.Worksheets(rngCell.Value)
objNewSheet.Select

Set rngNextAvailbleRow = objNewSheet.RANGE("A1:A" & objNewSheet.Cells(Rows.Count, "A").End(xlUp).Row)

RANGE("A" & rngNextAvailbleRow.Rows.Count + 1).Select
ActiveSheet.Paste
End If

Next rngCell

objWorksheet.Select
objWorksheet.Cells(1, 1).Select

End Sub
Sub检索_预测()
将工作表设置为工作表
变暗rngBurnDown作为范围
Dim rngCell As范围
将strPasteToSheet设置为字符串
将objNewSheet设置为工作表
Dim RNGNEXTAILBLEROW As范围
'定义源工作表
Set objWorksheet=thiswook.worksheet(“预测”)
'定义预测列表-包括可能不作为工作表存在的值
设置rngBurnDown=objWorksheet.RANGE(“A2:A”和objWorksheet.Cells(Rows.Count,“A”).End(xlUp.Row)
"环过射程",
对于rngBurnDown.Cells中的每个rngCell
工作表。选择
如果rngCell.Value为“”,则
'选择行
rngCell.EntireRow.Select
”“是的
选择,复制
'查找并粘贴工作表名称与预测列表匹配的位置
设置objNewSheet=thishworkbook.Worksheets(rngCell.Value)
objNewSheet.Select
设置rngnextavailbrow=objNewSheet.RANGE(“A1:A”和objNewSheet.Cells(Rows.Count,“A”).End(xlUp.Row)
范围(“A”&rngNextAvailbleRow.Rows.Count+1)。选择
活动表。粘贴
如果结束
下一个rngCell
工作表。选择
objWorksheet.Cells(1,1)。选择
端接头

您可以使用命令“On Error GoTo 0”忽略所有错误,或使用“On Error Resume Next”忽略错误并执行下一条指令,如中所示

例如:

For Each rngCell In rngBurnDown.Cells

On Error GoTo 0    

    objWorksheet.Select

If rngCell.Value <> "" Then
'SELECT ROW
rngCell.EntireRow.Select

'COPY
Selection.Copy

'FIND AND PASTE WHERE WORKSHEET NAME MATCHES FORECAST LIST

Set objNewSheet = ThisWorkbook.Worksheets(rngCell.Value)
objNewSheet.Select

Set rngNextAvailbleRow = objNewSheet.RANGE("A1:A" & objNewSheet.Cells(Rows.Count, "A").End(xlUp).Row)

RANGE("A" & rngNextAvailbleRow.Rows.Count + 1).Select
ActiveSheet.Paste
End If

Next rngCell
对于rngBurnDown.Cells中的每个rngCell,

错误转到0
工作表。选择
如果rngCell.Value为“”,则
'选择行
rngCell.EntireRow.Select
”“是的
选择,复制
'查找并粘贴工作表名称与预测列表匹配的位置
设置objNewSheet=thishworkbook.Worksheets(rngCell.Value)
objNewSheet.Select
设置rngnextavailbrow=objNewSheet.RANGE(“A1:A”和objNewSheet.Cells(Rows.Count,“A”).End(xlUp.Row)
范围(“A”&rngNextAvailbleRow.Rows.Count+1)。选择
活动表。粘贴
如果结束
下一个rngCell

相关行是否抛出错误或只是复制空单元格(也称为“不执行任何操作”)?