vba - 使用 Instr 和单元格格式时出现问题

标签 vba excel

我有一个谜题,我已经尝试解决了一段时间了。我有一个从 .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,但它会继续下去,直到找到列标题。

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

最佳答案

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

要在单元格中查找欧元,请检查如下格式:

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

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

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

关于vba - 使用 Instr 和单元格格式时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48340890/

相关文章:

excel - 如何另存为xlsx文件?

php - 导入Excel文件到MySQL

vba - 使用来自两列的信息创建超链接

Excel 反向递归(?) 搜索

excel - 如何在excel中添加另一个单元格的单元格引用

excel - 一个复杂的公式,可以发现匹配的单元格并进行比较

excel - VBA 运行时错误 -214724809 (80070057)

vba - 将表格导出到文本字段但在日期/时间字段中获取 hhmmss

正则表达式仅返回七位数字匹配

html - 字体大小未正确应用于新电子邮件 outlook 的正文