У меня есть код:

IF s LIKE "UZL.*" AND s LIKE "*.ENG" THEN

Он определяет, начинается ли значение ячейки с «UZL». и заканчивается на ".ENG", но я хотел бы изменить второй критерий ".ENG" так, чтобы длина ячейки была равна 16 символам. Так это как

If s Like "UZL.*" And cell value length =16 Then

Может кто-нибудь сказать, каков будет код для этого?

Полный код:

Dim vDB As Variant
Dim rngDB As Range
Dim s As String, sReplace As String
Dim i As Long
Dim Ws As Worksheet

Set Ws = Sheets("BOM")

On Error Resume Next
Worksheets("BOM").ShowAllData
 
With Ws
    Set rngDB = .Range("E2", .Range("E" & Rows.Count).End(xlUp))
End With
vDB = rngDB
For i = 1 To UBound(vDB, 1)
    s = vDB(i, 1)
    If s Like "UZL.*" And s Like "*.ENG" Then
        sReplace = Me.LanguageBox.Value
        s = Replace(s, "ENG", sReplace)
        vDB(i, 1) = s
    End If
Next i
rngDB = vDB

Рабочая тетрадь: https://easyupload.io/37tztt

0
user15274753 28 Фев 2021 в 19:49

1 ответ

Лучший ответ

Я не супер-эксперт в этом вопросе, но считаю, что вы можете использовать функцию LEN для получения длины текста.

Я считаю, что это должно сработать:

If s Like "UZL.*" And Len(s.value) = 16 Then

ОБНОВИТЬ:

Я провел локальный тест, и функция len должна быть в порядке, если переменная s на самом деле является строкой:

Sub Teste()
    
    s = "test"
    
    'First test
    If s Like "tes*" And Len(s) >= 4 Then
        Debug.Print "First Test: OK"
    End If
    
    'Second test
    If s Like "tes*" And Len(s) < 4 Then
        Debug.Print "Second Test: OK"
    Else
        Debug.Print "Second Test: NOK"
    End If
    
End Sub

Консольный вывод:

  • Первый тест: ОК
  • Второй тест: NOK
1
jpcrodrigues 28 Фев 2021 в 18:06