首页 > 解决方案 > 神秘地改变变量类型

问题描述

我有一个设置了变体变量的子程序,由于现在明显的原因,它在中途改变了它的类型。

我在程序开始时声明了变量:

 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 会这样做?

标签: vbavariablestypes

解决方案


推荐阅读