在VBA中2位数字大于3位数的问题

时间:2016-11-19 00:37:00

标签: vba csv access-vba

在构建VBA程序时,我遇到了一个奇怪的问题。该程序接收CSV文件,并在将其吐出之前进行一些重新格式化。我遇到了程序的问题,认为两位数字大于3位数字。例如,它认为60大于120,但认识到60小于80,而100小于120.以下是我的代码片段:

 Command.Parameters.Add("@folder",SqlDbType.Varchar).Value = folder; 

我的文件是这样的CSV设置:

if Rate < Miles and (Miles > 60 and Miles <=80) then
   Rate = 80
elseif Rate < Miles and (Miles > 80 and Miles <=120) then
   Rate = 120
End if 

在CSV文件中,每行中的最后两个数字是我关注的内容。 60s是Rate,61和100是Miles。当我运行这个程序时,它将通过第一行并将Rate从60改为80,这是正确的。问题是当它运行第二行时它将60作为60而不是将其更改为120.

我在这段代码上设置了一个断点,变量读取正确,Rate等于60,而Miles等于100,但它跳过90210,90201,60,61 90201,90210,60,100 部分。作为测试,我将Rate = 120更改为Rate < Miles,当然它已经读取Rate > Miles行,因为它现在认为60小于100.当然,进行此更改会导致其他问题运行3位数的费率,因此不是一个好的整体解决方案。有人有什么想法吗?

1 个答案:

答案 0 :(得分:7)

它们被比较为字符串,而不是数字。

"100" < "120" < "60" < "80"

您是如何声明和分配变量的?

如果您没有声明它们,它们是变体,可以是字符串或数字。 Dim Longif %enemyno%==7 goto enemy7

并将Option Explicit放在每个模块的顶部。 它强制执行变量声明,并在编译时报告未声明或拼写错误的变量/常量。 要在新模块中自动执行此操作,请在VBA编辑器中设置Require Variable Declaration选项。 这对于VBA开发来说确实是必须的。