VBA将单元格中最后3个符号替换为组合框值

VBA将单元格中最后3个符号替换为组合框值,vba,if-statement,replace,combobox,Vba,If Statement,Replace,Combobox,我有一个代码,可以查找以“UZL”开头的单元格,长度为16个符号: 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") With Ws Set rngDB = .Range("E2", .Range("E" &

我有一个代码,可以查找以“UZL”开头的单元格,长度为16个符号:

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")
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 Len(s) = 16 Then
        sReplace = Me.LanguageBox.Value
        s = Replace(s, "ENG", sReplace)
        vDB(i, 1) = s
    End If
Next i
rngDB = vDB
其中有一行:

s = Replace(s, "ENG", sReplace)
这种变化只是在单元格中包含“.ENG”(始终在末尾),但我需要定义它不依赖于此。它可能应该说“将最后三个符号更改为组合框所显示的内容”,而不是.ENG。有一个组合框,有249个difefrent选项,最后三个符号可能会被更改,我需要能够反复更改它们,比如从ENG到AUS到RUS等等

有人能帮我修改这个代码,一遍又一遍地修改吗


工作簿:

正确的行,而不是

s = Replace(s, "ENG", sReplace)
应该是


s=更换(s,右侧(s,3),s更换)

正确的行,而不是

s = Replace(s, "ENG", sReplace)
应该是


s=替换(s,右侧(s,3),s替换)

查看
右侧
中间
并使用
LEN
-4计算字符量。我尝试编写右侧和左侧函数,但均未成功。。。可能是因为我对VBA很陌生。请你把那一行修改一下好吗?这些变化应始终发生在有16个符号且以“UZL”开头的单元格中。因此,我需要能够将最后3个符号更改为combobox
left(s,len(s)-4)和sreplace
中的值,但最后4个符号除外。深入了解字符串操作,可以节省大量时间,而且几乎总是会出现丑陋的头部:)谢谢朋友,请查看
并使用
LEN
-4获取字符量。我尝试编写右函数和左函数,但没有成功。。。可能是因为我对VBA很陌生。请你把那一行修改一下好吗?这些变化应始终发生在有16个符号且以“UZL”开头的单元格中。因此,我需要能够将最后3个符号更改为combobox
left(s,len(s)-4)和sreplace
中的值,但最后4个符号除外。深入了解字符串操作,可以节省大量时间,而且几乎总是会出现丑陋的头部:)谢谢朋友,要使此功能正常工作,您必须确保搜索的值不会出现在字符串的其他位置(例如ULZ.ENGLISH.ENG将改为ULZ.xxxLISH.xxx)。您可能希望强制替换只发生在字符串的末尾。为此,您必须确保搜索的值不会出现在字符串的其他地方(例如ULZ.ENGLISH.ENG将更改为ULZ.xxxLISH.xxx)。您可能希望强制替换只发生在字符串的末尾。