【发布时间】:2021-05-30 08:23:22
【问题描述】:
我有一个代码:
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
【问题讨论】:
-
你可能想要
Lenfunction,它接受一个字符串并返回字符串中的字符数。 -
我一直在尝试 LEN 功能,但它不起作用,因为我可能不知道如何正确编写它。我得到的是 If s Like "UZL.*" And Len(rng) = 16 那么我的错误是什么?
-
Len适用于字符串,而不适用于Range对象;rng是字符串还是Range对象?此外,您应该将这些详细信息编辑到您的问题中。另外,你说它不起作用;您可能应该指定您如何知道它不起作用;是运行时错误吗?编译错误?代码是否返回错误的结果? -
我怎么知道?好吧,因为我完全没有看到任何变化......没有错误,也没有任何结果。 DIM rng 作为范围
-
同样,您不想在
rng上使用Len,因为rng拥有一个Range对象。您想在s上使用它,这是您从单元格中提取的字符串。
标签: vba if-statement string-length