Excel VBA-过程调用或参数无效(错误5)
我很难找到这次事故的原因 无效的过程调用或参数(错误5) 这发生在我正在操作的表的最后一行 我尝试过相同格式的不同表格,发现它们工作得很好。这使我相信表中的特定行存在问题 相关代码:Excel VBA-过程调用或参数无效(错误5),vba,excel,Vba,Excel,我很难找到这次事故的原因 无效的过程调用或参数(错误5) 这发生在我正在操作的表的最后一行 我尝试过相同格式的不同表格,发现它们工作得很好。这使我相信表中的特定行存在问题 相关代码: VName.Value = RID.Value & " " & IIf(InStr(1, RID.Offset(columnOffset:=1).Value, vbCrLf) <> 0 And _ (InStr(1, RID.Offset(columnOffset:=1)
VName.Value = RID.Value & " " & IIf(InStr(1, RID.Offset(columnOffset:=1).Value, vbCrLf) <> 0 And _
(InStr(1, RID.Offset(columnOffset:=1).Value, vbCrLf) - 1) >= 10, _
Left(RID.Offset(columnOffset:=1).Value, InStr(1, RID.Offset(columnOffset:=1).Value, vbCrLf) - 1), RID.Offset(columnOffset:=1).Value)
VName.Value=RID.Value&&&IIf(InStr(1,RID.Offset(columnpoffset:=1.Value,vbCrLf))0和_
(指令(1,RID.Offset(columnOffset:=1).Value,vbCrLf)-1)>=10_
左(RID.Offset(ColumnCoffset:=1).Value,指令(1,RID.Offset(ColumnCoffset:=1).Value,vbCrLf)-1),RID.Offset(ColumnCoffset:=1).Value)
完整代码:
“~~~>每行
'~~>ID行(偏移2列),其中SectionTitle(缓存A3)+ID在标题上以0开头
设为零
设置区段=范围(“值”!$A$3”)
设置RCount=.Range(.Cells(HC,2),.Cells(.Cells(Rows.count,2).End(xlUp).Row,2))
IDCount=0
对于RCount中的每个RID
'ID请求行
RID.Offset(columnPoffset:=-1).Value=SecT.Value&&IDCount
“~~~>将ID、ReqName、节添加到值表中,如果ID为0,则键入=文件夹
设置VSection=工作表(“值”)。单元格(工作表(“值”)。单元格(Rows.count,2)。结束(xlUp)。行+1,2)
VSection.EntireRow.ClearContents
设置VName=工作表(“值”)。单元格(工作表(“值”)。单元格(Rows.count,2)。结束(xlUp)。行+1,3)
设置VType=工作表(“值”)。单元格(工作表(“值”)。单元格(Rows.count,2)。结束(xlUp)。行+1,4)
设置VID=工作表(“值”)。单元格(工作表(“值”)。单元格(行数,2)。结束(xlUp)。行数+1,5)
'行=标题,其中IDCount=0
如果IDCount=0,则
v节值=节值
VName.Value=节值
VType.Value=“文件夹”
VID.Value=IDCount
'行标题,其中IDCount>0
如果IDCount>0,则
v节值=节值
VName.Value=RID.Value&&&IIf(InStr(1,RID.Offset(columnpoffset:=1.Value,vbCrLf))0和_
(指令(1,RID.Offset(columnOffset:=1).Value,vbCrLf)-1)>=10_
左(RID.Offset(ColumnCoffset:=1).Value,指令(1,RID.Offset(ColumnCoffset:=1).Value,vbCrLf)-1),RID.Offset(ColumnCoffset:=1).Value)
VName.WrapText=False
VID.Value=IDCount
如果结束
IDCount=IDCount+1
下一个RID
RID.Value=FLO.1170
RID.Offset(ColumnCoffset:=1)。Value=WORKITEM管理
触发
无效的过程调用或参数(错误5)
由于“工作项管理”中没有换行符,因此应使用完整的单元格值,而不是左函数。其他113排运行良好
左(,)
与数字10进行比较。这可能不正确。若从中返回的文本看起来像一个数字,那个么将其包装在CLng()或CDbl()中以获得实际的数字VName.Value=RID.Value&&&Split(RID.Offset(columnpoffset:=1.Value,Chr(10))(0)
似乎
IIF
正在评估这两个条件,而不是在第一个条件为false时忽略第二个条件。如果和始终同时计算这两个参数。如果第一个为真,则仅计算第二个。我怀疑第二个标准是导致崩溃的原因,因为无论第一个标准是否为真(在本例中为非真),都会对其进行评估,Left
的长度不能为负。将IIF更改为一对嵌套的If语句。似乎有效。感谢您的快速回复。另请参阅:@ssoog-请参阅下面我的扩展说明和使用.Split
的替代方法。我没有想到使用.Split函数。太好了,谢谢你。
'~~~> For Each Row
'~~~> ID Row (offset by 2 columns) with SectionTitle (Cache A3) + ID starting with 0 on the header
Set RID = Nothing
Set SecT = Range("'Values'!$A$3")
Set RCount = .Range(.Cells(HC, 2), .Cells(.Cells(Rows.count, 2).End(xlUp).Row, 2))
IDCount = 0
For Each RID In RCount
'ID Req rows
RID.Offset(columnOffset:=-1).Value = SecT.Value & " " & IDCount
'~~~> Add ID, ReqName, Section to Values sheet where if ID is 0 then Type = Folder
Set VSection = Worksheets("Values").Cells(Worksheets("Values").Cells(Rows.count, 2).End(xlUp).Row + 1, 2)
VSection.EntireRow.ClearContents
Set VName = Worksheets("Values").Cells(Worksheets("Values").Cells(Rows.count, 2).End(xlUp).Row + 1, 3)
Set VType = Worksheets("Values").Cells(Worksheets("Values").Cells(Rows.count, 2).End(xlUp).Row + 1, 4)
Set VID = Worksheets("Values").Cells(Worksheets("Values").Cells(Rows.count, 2).End(xlUp).Row + 1, 5)
'Row = Header where IDCount = 0
If IDCount = 0 Then
VSection.Value = SecT.Value
VName.Value = SecT.Value
VType.Value = "Folder"
VID.Value = IDCount
'Row <> Header where IDCount > 0
ElseIf IDCount > 0 Then
VSection.Value = SecT.Value
VName.Value = RID.Value & " " & IIf(InStr(1, RID.Offset(columnOffset:=1).Value, vbCrLf) <> 0 And _
(InStr(1, RID.Offset(columnOffset:=1).Value, vbCrLf) - 1) >= 10, _
Left(RID.Offset(columnOffset:=1).Value, InStr(1, RID.Offset(columnOffset:=1).Value, vbCrLf) - 1), RID.Offset(columnOffset:=1).Value)
VName.WrapText = False
VID.Value = IDCount
End If
IDCount = IDCount + 1
Next RID