处理范围表不存在的VBA时出错
我使用的是XL2007-Windows7 在下面的代码中,我需要一个错误处理元素。 rngburndown范围内的某些值不作为工作表存在,我需要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
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
相关行是否抛出错误或只是复制空单元格(也称为“不执行任何操作”)?