用excel数据库实现VBA计数器

用excel数据库实现VBA计数器,excel,vba,Excel,Vba,我正在为excel工作表编写一些宏,这些宏将向数据库添加点。就纬度和经度值而言,条目需要是唯一的,因此我添加了几行代码,在用户尝试输入条目后检查条目的纬度/经度。它旨在对照数据库中的所有条目检查挂起条目的lat/long。如果它与一个匹配,它将返回一个错误。代码如下: x = 2 Do Until (Worksheets("DBase").Cells(x, 3).Value = "") If Worksheets("DBase").Cells(x, 3).Value = lat And

我正在为excel工作表编写一些宏,这些宏将向数据库添加点。就纬度和经度值而言,条目需要是唯一的,因此我添加了几行代码,在用户尝试输入条目后检查条目的纬度/经度。它旨在对照数据库中的所有条目检查挂起条目的lat/long。如果它与一个匹配,它将返回一个错误。代码如下:

x = 2
Do Until (Worksheets("DBase").Cells(x, 3).Value = "")
     If Worksheets("DBase").Cells(x, 3).Value = lat And Worksheets("DBase").Cells(x,
4).Value = lon Then
          GoTo coorAbort
     Else
          x = x + 1
     End If
Loop

x是行计数器,lat和lon是用户输入的lat/long,CooraPort是带有错误消息的部分。一切正常,除了将循环推进到下一行的计数器似乎不起作用。它检查第二行条目,然后退出循环并继续执行代码的下一部分。我肯定我有点小毛病,我就是看不出来。有人有什么想法吗?

我想
lat
lon
是双值?如果是这样的话,你应该更换

If Worksheets("DBase").Cells(x, 3).Value = lat


如果Abs(工作表(“DBase”).Cells(x,3).Value-lat)我猜
lat
lon
是双值?如果是这样的话,你应该更换

If Worksheets("DBase").Cells(x, 3).Value = lat


如果是Abs(工作表(“DBase”).Cells(x,3).Value-lat),是否尝试使用调试器单步执行代码?是。目前,我只使用两个数据库条目来测试它。当我尝试添加与第一个条目具有相同lat/long的第三个条目时,它会按照应该的方式转到CooraPort错误消息。但是,如果我尝试添加与第二个条目具有相同lat/long的第三个条目,则计数器实际上可以工作(通过调试器逐步执行),并在if语句中进行比较,但是由于某些原因,它们并不相等,并继续循环。您是否尝试使用调试器单步执行代码?是的。目前,我只使用两个数据库条目来测试它。当我尝试添加与第一个条目具有相同lat/long的第三个条目时,它会按照应该的方式转到CooraPort错误消息。但是,如果我尝试添加第三个与第二个条目具有相同lat/long的条目,计数器实际上会工作(通过调试器逐步执行),并且它会在if语句中进行比较,但出于某种原因,它们不相等,并继续循环。你是对的。。。嗯,从某种意义上说。lat和lon是字符串,问题不一定在我的代码中。Excel中的格式是舍入小数,所以即使相同的值被输入Excel,舍入的版本也会与输入的版本进行比较。你说得对。。。嗯,从某种意义上说。lat和lon是字符串,问题不一定在我的代码中。Excel中的格式是将小数舍入,因此即使将相同的值输入Excel,也会将舍入的版本与输入的版本进行比较。