Я сделал следующий скрипт, и у меня есть проблема, две первые замены работают, но не заменяют if. Я пробовал много разных способов, но он все еще не работает Знаете ли вы, почему?Проблема на скрипте excel vba
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
Просто добавьте, что если это так, вы можете также обернуть val в строку: If (Left (str (val), 2) = "33") –
@Mark Moore Я не могу do str (val) cause val уже является строкой. –
@ Томас Бек Саттон Как? потому что функция LEFT принимает два аргумента (строка, количество символов), нет другого аргумента, который я думаю. Может быть, у вас есть другое решение, чем функция LEFT? –