在代码中,我想在工作表中找到特定值的列号,该值几乎每天都会发生变化。有时它会包含“İ”,“Ş”,“#”和其他人员等字符。
问题是,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
我仍然无法获得列值。
答案 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
编辑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