繁体   English   中英

关于Excel VBA脚本的问题

[英]Issue on excel vba script

我制作了以下脚本,但遇到了问题,前两个替换工作正常,但是if中的替换却不行。 我尝试了许多不同的方法,但仍然无法正常工作,您知道为什么吗?

Private Sub CommandButton1_Click()

Dim totalCases As Integer
totalCases = Range("Q1").End(xlDown).Row

    For caseNb = 2 To totalCases Step 1
       replace_me_that caseNb, 17
    Next caseNb

    For caseNb = 2 To totalCases Step 1
       replace_me_that caseNb, 18
    Next caseNb

End Sub

Private Sub replace_me_that(ByVal caseNb As Integer, ByVal column As Integer)

Dim val As String
Dim objRegExp As Object
If (Cells(caseNb, column).Value = "") Then
    Exit Sub
End If
         val = Cells(caseNb, column).Value
         Set objRegExp = CreateObject("VBScript.RegExp")
           With objRegExp
               .Global = True
                .IgnoreCase = True
           End With
         objRegExp.Pattern = "\s*\(0\)\s*|\s*[()]\s*"
         val = objRegExp.Replace(val, "")
         val = Replace(val, ".", "")                       =>work
         val = Replace(val, " ", "")                       =>work
         If (Left(val, 2) = "33") Then                     =>condition true
             val = Replace(val, "33", "+33", 1)            =>don't work
         End If
         Cells(caseNb, column).Value = val

End Sub

我最好的猜测是,单元格中包含的33被视为整数,或者您可能需要将最后一个选项设置为“ vbcomparetext”。 每当我比较字符串时,我通常都会使用该选项,并且通常对我来说效果很好。 祝好运。

我发现了错误,每个单元格的格式都设置为整数而不是文本。 现在正在工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM