替换函数上的过程调用或参数无效

时间:2015-08-09 06:35:51

标签: vba excel-vba excel

我正在尝试自动复制HMTL表,然后将数据分配到选定的单元格中,但是在替换列上的某些数据时会发生错误,单击调试后代码可以正常运行但不会继续删除单元格。 / p>

错误:

error

代码:

Option Explicit
Sub Button11_Click()
Application.ScreenUpdating = False
Dim j As Integer, b As Integer, r As Integer, g As String

Range("XET1").Select
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
False, NoHTMLFormatting:=True

j = 6
b = 1

For r = 5 To 1000
    If ActiveSheet.Cells(r, 5).Value <> "" Then

        Range("C" & j).Value = Range("XEU" & b).Value
        g = Range("XEV" & b)
        Range("E" & j).Value = Replace(Mid(g, InStr(g, "(") + 5, InStr(g, ")") - InStr(g, "(") - 5), "CEST", "")
        Range("D" & j).Value = Replace(Mid(g, InStr(g, "") + 38, InStr(g, ")") - InStr(g, "(") + 25), "REQ", "")
        Range("F" & j).Value = Range("XFD" & b).Value

    j = j + 1
    b = b + 1
   End If
Next r

ActiveSheet.Range("XET1:XFD50").Clear
Application.ScreenUpdating = True
End Sub

1 个答案:

答案 0 :(得分:1)

如果没有数据,我无法肯定地说,但我强烈怀疑问题是你的一个或多个InStr支票正在返回0,这意味着你所拥有的字符搜索(&#34;(&#34;和&#34;)&#34;)不在字符串中。这意味着您正在调用Mid(g,0,0),这会导致您报告的错误。

我建议您在尝试更换之前检查您正在搜索的角色是否存在,因此:

If InStr(1, g, ")") > 0 Then
    'your replace code here
Else
    Debug.Print ("Search character not found")
End If

不是最优雅的解决方案,但它确实有效。