vba - 神秘地改变变量类型
问题描述
我有一个设置了变体变量的子程序,由于现在明显的原因,它在中途改变了它的类型。
我在程序开始时声明了变量:
Dim acsp As Variant
Dim oldmaster As Variant
Dim acontacts As Variant
Dim avp As Variant
Dim acctst As Variant
Dim ashipto As Variant
Dim abillto As Variant
Dim found, found1, found2 As Boolean
acsp = Sheet6.UsedRange.Value2
acontacts = Sheet5.UsedRange.Value2
avp = Sheet9.UsedRange.Value2
acctst = Sheet20.UsedRange.Value2
ashipto = Sheet11.UsedRange.Value
abillto = Sheet15.UsedRange.Value
代码运行并基于 IF 条件,它可能会调用此代码(在同一个子代码中):
c = UBound(acsp) + 1
shipto = Trim(UCase(acctst(aa, 27)))
billto = Trim(UCase(acctst(aa, 38)))
shiptofound = False
For shiptorow = 2 To UBound(ashipto)
ashipto1 = Trim(UCase(ashipto(shiptorow, 2)))
If ashipto1 = shipto Then
shiptofound = True
Exit For
End If
Next shiptorow
直到 shiptofound=False 行之前,abillto 变体显示为变体/变体(1 到 677、1 到 18),这是正确的。但是,一旦它运行 For shiptorow = 2 To UBound(ashipto) 行,abillto 变体就会更改为值为 2 的变体/长类型?在此代码之前,任何时候都不会在代码中使用 billlto。
为什么 VBA 会这样做?
解决方案
推荐阅读
- r - 将 XML 转换为数据框
- javascript - 如何在 Angular 中将 JS 文件包含到组件中
- excel - 在 Excel 中,需要匹配每行中的数字并添加包含匹配项的单元格数
- authentication - Elm 中的惯用身份验证
- ruby - 线程中的 Ruby 线程
- django - 使用 Angular 登录页面寻找有关 Django 身份验证的帮助
- c# - .NET Core 控制台应用程序无法在 Windows Server 上运行
- mysql - MySQL 查询以查看过去 3 个月内的变化
- javascript - 在页面加载后通过小书签检索 XHR/GET 历史记录
- postgresql - 使用 pg 客户端连接到 postgres 的问题