我试图找到输入表格的单位的先前值(单位的数据是整行)。随着时间的推移,单元中某列中的值会增长,并且我尝试使用循环根据每行中的两个值分析每一行,并在为该特定行输入新值时返回该特定单元中的先前值单元。
'My Variables
Dim current_size As Integer
Dim last_size As String
Dim joint_number As Integer
Dim tool_sizes As Range: Set tool_sizes = drill_log.Range("Drill_Log[Tool Size]")
Dim joints As Range: Set joints = drill_log.Range("Drill_Log[Joint '#]")
Dim pass_types As Range: Set pass_types = drill_log.Range("Drill_Log[Pass Type]")
Dim row As Range
'Finds the current pass size and last pass size and assigns it to the current pass size variables
If pass_type = ream Then
current_size = drill_log.Range("W" & last_ream_range.row)
joint_number = drill_log.Range("C" & last_ream_range.row)
ElseIf pass_type = intersect_ream Then
current_size = drill_log.Range("W" & last_intersect_ream_range.row)
joint_number = drill_log.Range("C" & last_intersect_ream_range.row)
Else
Exit Sub
End If
'Finds the previous pass size for the last joint entered
For Each row In drill_log.Range("Drill_Log")
'Line that Errors
If pass_types.Value = pass_type And joints.Value = joint_number Then
If tool_sizes < current_size Then
last_size = tool_sizes
Else
last_size = "NONE"
End If
Else
End If
Next row
我的目标是让它检查每一行中的指定列,如果它匹配,那么如果包含信息的列中的单元格小于当前列,则将其分配给变量。
现在它告诉我,我的类型不匹配,我无法解决它。 谢谢你的帮助。
答案 0 :(得分:2)
将Range.Value
与字符串或数字或任何内容进行比较的指令上的类型不匹配错误,几乎可以肯定是由于Range.Value
包含错误值。
修复数据并确保这些单元格中永远不会出现错误:
=IFERROR([whatever formula you have here], "")
或者更改代码,使其不再假设单元格中没有错误:
If Not IsError(pass_types.Value) And Not IsError(joints.Value) Then
If pass_types.Value = pass_type And joints.Value = joint_number Then
'...
End If
End If
...或安全玩耍,尽可能做到。
类型不匹配的原因是当IsError(Range.Value)
为True
时,Range.Value
的类型为Variant/Error
,而VBA不会我不知道如何将Error
值与任何值进行比较。
摄制:
Debug.Print TypeName(CVErr(xlErrNA)) 'prints "Error"
Debug.Print IsError(CVErr(xlErrNA)) 'prints "True"
Debug.Print CVErr(xlErrNA)) = vbNullString 'type mismatch
Debug.Print CVErr(xlErrNA)) = 0 'type mismatch