目标:查找输入到数组<redis-service-name>.<namespace>.svc.cluster.local:6379
say, redis service name is redis and namespace is default then it should be
redis.default.svc.cluster.local:6379
中的列标题,然后将这些列复制到新表上。
原始数据有200列以上,因此无法手动获取它们,因此它仅使用<redis-pod-name>.<redis-service-name>.<namespace>.svc.cluster.local:6379
say, redis pod name is redis-0 and redis service name is redis and namespace is default then it should be
redis-0.redis.default.svc.cluster.local:6379
在第一行中搜索有问题的标题。如果找不到标头,则在Headers
行上得到MATCH
。
我试图将HeaderLoc更改为Variant,以使其采用错误值,但这不起作用。
我的错误陷阱RTE 1004: Application-defined or object defined error
行未达到-我还试图在分配HeaderLoc = Match
之前放置错误陷阱
如何在不使用If Not IsError
的情况下继续显示错误?另外,此解决方案似乎与此处的许多其他公认解决方案保持一致,因此想知道为什么它在这里不起作用但在其他情况下确实如此。是因为分配数组的方式?
HeaderLoc
答案 0 :(得分:2)
跳过错误并测试0
Dim HeaderLoc As Long
Dim Headers
Headers = Array("Header1", "Header2", Etc........)
Application.ScreenUpdating = False
For i = LBound(Headers) To UBound(Headers)
HeaderLoc = 0
On Error Resume Next
HeaderLoc = WorksheetFunction.Match(Headers(i), Raw.Rows(1), 0)
On Error GoTo 0
If HeaderLoc > 0 Then
Raw.Range(Raw.Cells(2, HeaderLoc), Raw.Cells(LR, HeaderLoc)).Copy
Des.Cells(2, i + 13).PasteSpecial xlPasteValues
End If
Next i
Application.ScreenUpdating = True
或使用Application.Match和变量。
Dim HeaderLoc As Variant
Dim Headers
Headers = Array("Header1", "Header2", Etc........)
Application.ScreenUpdating = False
For i = LBound(Headers) To UBound(Headers)
HeaderLoc = Application.Match(Headers(i), Raw.Rows(1), 0)
If Not IsError(HeaderLoc) Then
Raw.Range(Raw.Cells(2, HeaderLoc), Raw.Cells(LR, HeaderLoc)).Copy
Des.Cells(2, i + 13).PasteSpecial xlPasteValues
End If
Next i
Application.ScreenUpdating = True