【问题标题】:VBA IF cell VALUE LENGTH criteriaVBA IF 单元格 VALUE LENGTH 标准
【发布时间】: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

工作簿:https://easyupload.io/37tztt

【问题讨论】:

  • 你可能想要Len function,它接受一个字符串并返回字符串中的字符数。
  • 我一直在尝试 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


【解决方案1】:

我不是这方面的超级专家,但我相信你可以使用 LEN 函数来获取文本长度。

我相信这应该可行:

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

更新:

我已经在本地进行了测试,如果 s 变量实际上是一个字符串,则 len 函数应该没问题:

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

控制台输出:

  • 第一次测试:OK
  • 第二次测试:NOK

【讨论】:

  • 这似乎根本没有做任何事情。你想看一本工作簿吗?
  • 我已经更新了答案检查值是否会返回单元格文本,如果是,那么 LEN 函数应该可以正常工作。
  • Dim s As String 新代码返回错误:“s”上的“Invalid qualifier”
  • 如果您将 s 设置为字符串,那么您不需要获取值 (s.value),s 变量应该足够大。请更新您的帖子并分享完整的 VBA scipt。
  • 我无法在本地运行您的代码。虽然我已经在本地对长度函数进行了测试,如果 s 变量实际上是一个字符串应该没问题。检查我更新的答案。
猜你喜欢
  • 2012-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-25
  • 1970-01-01
  • 2016-02-05
相关资源
最近更新 更多