使用Instr与Cell格式的问题

时间:2018-01-19 12:14:48

标签: excel vba excel-vba

我有一个难题,我试图解决一段时间。我有一个电子表格,可以从.csv文件导入数据,该文件远离初始位置设置。

我目前正在搜索以查找包含值的最后一个单元格并将其用作起点。现在出于上述原因,我有时会失败并将起点放在电子表格的中间位置。为了解决这个问题,我决定写一个支票代码或更复杂的位置查找器。

新的位置查找器如下

    For a = 1 To 400

    Dim SearchString As Variant
    Dim SearchSymbol As String

    SearchString = Cells(NewLastRowNumber, 10)
    SearchSymbol = "€"

        If InStr(1, SearchString, SearchSymbol, 1) = 0 Then

            NewLastRowNumber = NewLastRowNumber - 1

        Else

            NewLastRowNumber = NewLastRowNumber + 1
            Exit For
        End If

Next a

除了它在单元格中搜索的内容之外,这是有效的。理想的背后是搜索包含成本的数据列,即(第1行 - > 100欧元,第2行 - > 235欧元等)并查找最后一个包含的单元格,目前我只能让它找到列标题而不是单元格。

列中的每个单元格都被格式化为自定义(€0.00),不确定这是否有任何区别。

我已经嵌入了一些图片来进一步展示我的问题。

Copy of sample spreadsheet

Image of code describing cell value 此时NewLastRowNumber = 13

此时循环应该中断并记录NewLastRowNumber = 13,但它会继续,直到找到列标题。

希望这一切都有意义和谢谢。

1 个答案:

答案 0 :(得分:2)

单元格格式为货币或自定义,因此您无法在那里找到欧元符号。当您检查InStr()时,它会检查单元格.Value,而不是.Format

要在Cell中找到Eur,请检查以下格式:

If Cells(NewLastRowNumber, 10).NumberFormat = "€0.00" Then

要在VBA中查看确切的数字格式,请选择所需格式的单元格并运行以下命令:

Sub Test()
    Debug.Print Selection.NumberFormat
End Sub