Jcm*_*010 0 csv vba access-vba
在构建VBA程序时,我遇到了一个奇怪的问题.该程序接收CSV文件,并在将其吐出之前进行一些重新格式化.我遇到了程序的问题,认为两位数字大于3位数字.例如,它认为60大于120,但认识到60小于80,而100小于120.以下是我的代码片段:
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
Run Code Online (Sandbox Code Playgroud)
我的文件是CSV设置如下:
90210,90201,60,61
90201,90210,60,100
Run Code Online (Sandbox Code Playgroud)
在CSV文件中,每行中的最后两个数字是我关注的内容.60s是Rate,61和100是Miles.当我运行这个程序时,它将通过第一行并将Rate从60改为80,这是正确的.问题是,当它运行第二行时,它将60作为60而不是将其更改为120.
我在这部分代码上设置了一个断点,并且变量正确读取,Rate等于60,而Miles等于100,但它跳过了该Rate = 120部分.作为一个测试我改变Rate < Miles了Rate > Miles,并且确定它读取了rate = 120线,因为它现在认为60小于100.当然,进行这种改变导致运行3位数时的其他问题,因此不是一个好的整体解决方案.有人有主意吗?
它们被比较为字符串,而不是数字.
"100" < "120" < "60" < "80"
Run Code Online (Sandbox Code Playgroud)
你是如何声明和分配变量的?
如果你没有声明它们,它们是Variants,可以是字符串或数字.Dim他们是Long.
并放在Option Explicit每个模块的顶部.它强制执行变量声明,并在编译时报告未声明或拼写错误的变量/常量.要在新模块中自动执行此操作,请在VBA编辑器中设置" 需要变量声明"选项.这对于VBA开发来说确实是必须的.
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |