【发布时间】:2015-02-02 21:07:40
【问题描述】:
我正在使用以下代码从列中拆分关键字。但是,它不断向我抛出主题错误。我怀疑这与我的 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
【问题讨论】:
-
colLen = Len(ws.Cells(i, 1).Value) - 20行的目的是什么?我想您可能会遇到colLen可能是负数的问题。如果是这种情况,您可以通过将 If 语句更改为If colLen > 0 Then来修复它。 -
使用中间窗口来帮助解决这些问题也很有用,例如它正在崩溃的值。您可以在循环内键入
Debug.Print colLen,在中间窗口Ctrl+G或View > Intermediate Window(在IDE 中)它每次都会打印出该值。一个非常有用的工具。 -
嗨所以ColLen的目的是从A列上的字符串中切出关键字
-
当单元格中值的长度小于20时,你想要什么样的行为?
-
在这种情况下基本上是简单地移动到下一个对象下一行