Mid和Len导致无效的过程调用或参数5

时间:2015-02-01 23:34:05

标签: vba excel-vba excel

我使用以下代码从列中拆分关键字。但是,它一直在向我提出主题错误。我怀疑这与我的Len或Mid有关。

Sub ConcatenateTLS()

  Dim x As String
  Dim ws As Worksheet
  Dim colLen As Integer

  On Error GoTo ER

  Set ws = ThisWorkbook.Worksheets(1)

  x = InputBox("Enter your Column Label")

  LR = ws.Cells(Rows.Count, x).End(xlUp).Row

    For i = 2 To LR
        colLen = Len(ws.Cells(i, 1).Value) - 20
        If colLen <> 0 Then
            ws.Cells(i, 8).Value = Mid((ws.Cells(i, 1).Value), 15, colLen)
        End If

    Next
ER:
  MsgBox Err.Description & " " & Err.Number

End Sub

2 个答案:

答案 0 :(得分:2)

问题在于您将负数colLen传递给MID函数。尝试添加一些条件处理来防止这种情况。

答案 1 :(得分:0)

这可能是另一种选择:

Sub M_snb()
  On Error Resume Next
  ActiveSheet.UsedRange.Columns(InputBox("which column ?")).Name = "snb_002"

  MsgBox Join(Filter([transpose(if(snb_002="","~",if(len(snb_002)>20,left(snb_002,len(snb_002)-20),snb_002)))], "~", False), vbLf)
End Sub