如果范围在任何单元格中显示"Fail",如何转移到工作表?



>我正在创建一个数据输入表单,我正在寻找是否有任何结果显示"失败"将用户发送到不同的工作表进行其他测试,但如果它们都通过正常进行。

我试过如果范围("R5:R20")=失败,那么

但它出了问题。

Sub RecordBathTest()
Application.ScreenUpdating = False
Workbooks.Open Filename:= _
"G:QAComplianceBath TestingResultsForm 8241B - Bath Test 
Log.xlsx"
Windows("Data Entry Log.xlsm").Activate
Range("D5:S20").Select
Selection.Copy
Windows("Form 8241B - Bath Test Log.xlsx").Activate
Sheets("2019").Select
Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
Windows("Data Entry Log.xlsm").Activate
Application.CutCopyMode = False
If Range("R5:R20").Value = "Fail" Then
Sheets("Bath Test Failure Log").Select
Else
Range("D5:E20,G5:P20,R5:S20").Select
Selection.ClearContents
Windows("Form 8241B - Bath Test Log.xlsx").Activate
ActiveWorkbook.Save
ActiveWindow.Close
Windows("Data Entry Log.xlsm").Activate
Sheets("Test Start").Select
ActiveWorkbook.Save
End If
End Sub

我得到

运行时错误"13":
类型不匹配

它说它不喜欢我的范围选择 If 语句

您不能同时评估范围内的单元格 - 您需要遍历范围内的每个单元格并逐个评估。这可以通过for循环来完成(想想从R5到R20的每个单元格,找出值是否为"失败">)。替换以下行:

If Range("R5:R20").Value = "Fail" Then
Sheets("Bath Test Failure Log").Select
Else
Range("D5:E20,G5:P20,R5:S20").Select
Selection.ClearContents
Windows("Form 8241B - Bath Test Log.xlsx").Activate
ActiveWorkbook.Save
ActiveWindow.Close
Windows("Data Entry Log.xlsm").Activate
Sheets("Test Start").Select
ActiveWorkbook.Save
End If

check = 0
For Each cell In Range("R5:R20")
If cell.Value = "Fail" Then
check = 1
Exit For
End If
Next cell
If check = 1 Then
Sheets("Bath Test Failure Log").Select
Else
Range("D5:E20,G5:P20,R5:S20").Select
Selection.ClearContents
Windows("Form 8241B - Bath Test Log.xlsx").Activate
ActiveWorkbook.Save
ActiveWindow.Close
Windows("Data Entry Log.xlsm").Activate
Sheets("Test Start").Select
ActiveWorkbook.Save
End If

这应该可以解决您的直接问题,但我建议您重组代码以引用对象而不是使用 actate,并尽可能避免Select

最新更新