excel vba查找包含其他字符的属性

时间:2017-10-05 08:24:34

标签: excel vba find

在代码中,我想在工作表中找到特定值的列号,该值几乎每天都会发生变化。有时它会包含“İ”,“Ş”,“#”和其他人员等字符。

问题是,find属性不适用于那些字母,我无法获取该单元格列号。

以下是我试图找到位置的代码;

For x = 2 To LastRowB

Set xr = Worksheets("Check").Range("T" & x & ":BQ" & x & "").Find(Check_Value)

If Not (xr Is Nothing) Then

Dim xa As String
xa = Split(xr.Address, "$")

xCheck_Column = xa(1) + 1
xTotal_First = Worksheets("Check").Cells(x, xCheck_Column).Value

e = e + xTotal_First

End If

Next x

在调试模式下,我看到Check_Value没有正确显示。它应该带有其他字符,如Ş和İ,但它来自S和我。

编辑:

像这样改变Check_Value;

    Dim Check_Value As String
    Dim xr As Range
        Check_Value = Worksheets("Check_Test").Range("P5").Value

Set xr = Worksheets("Check").Range(""T" & x & ":BQ" & x & "").Find(Check_Value)
Dim xa As Long
xa = xr.Column

我仍然无法获得列值。

1 个答案:

答案 0 :(得分:1)

而不是

Dim xa As String
xa = Split(xr.Address, "$")
xCheck_Column = xa(1) + 1

使用

Dim xa As long
xa = xr.Column
xCheck_Column = xa + 1

Dim xa
xa = Split(xr.Address, "$")
xCheck_Column = xa(2) + 1

编辑:

当我使用下面的代码时,我得到了所需的结果。见图。

Sub t()
    Dim rng As Range
    Dim str As String
    str = "SOY" & ChrW(304) & "S"
    Set rng = Range("A1:O10").Find(str)
    MsgBox "Column no. " & rng.Column
End Sub

enter image description here

编辑2: 我可以从工作表中获取str的值,然后找到。见下文。

Sub test()
    Dim rng As Range
    Dim str As String
    str = Range("A1").Value
    Set rng = Range("D1:O10").Find(str)
    MsgBox "Column no. " & rng.Column
End Sub

enter image description here