我试图摆脱对VB6应用程序中SCRRUN.DLL的依赖。它当前用于其中的一件事是其Dictionary类。Dictionary类具有一个Keys函数,该函数应该返回字典中的一个键数组。我做了一些实验,看看字典中没有键会发生什么:
Dim D As Dictionary Set D = New Dictionary Dim K() As Variant K = D.Keys MsgBox LBound(K) & ", " & UBound(K)
我原以为“下标超出范围”或类似的内容,但是我却得知LBound为0,UBound为-1。
那么,如何创建具有LBound 0和UBound -1的Variant数组?
我试过只使用未初始化的变体数组:
Dim K() as Variant MsgBox LBound(K) & ", " & UBound(K)
但是,当然,正如我所期望的那样,这会使“下标超出范围”。删除未初始化的数组也是如此:
Dim K() as Variant Erase K MsgBox LBound(K) & ", " & UBound(K)
与擦除初始化数组一样:
Dim K() As Variant ReDim K(0 To 0) Erase K MsgBox LBound(K) & ", " & UBound(K)
我还尝试过仅将其重新设置为0和-1,这看起来很奇怪:
Dim K() As Variant ReDim K(0 To -1) MsgBox LBound(K) & ", " & UBound(K)
但这也使“下标超出范围”。
在网络上闲逛了一会,我发现了以下技巧:
Dim K() As String K = Split(vbNullString) MsgBox LBound(K) & ", " & UBound(K)
这实际上确实给出了一个带有LBound 0和UBound -1的数组!不幸的是,这是一个String数组,而我需要一个Variant数组。我不能很好地将字符串从一个数组单独复制到另一个数组的Variants中,因为0到-1以及所有。
有谁知道如何在不使用SCRRUN.DLL的情况下使用LBound 0和UBound -1制作这样的数组Variant()?最好也只使用内置的VB6东西,但是如果允许使用某些外部东西(SCRRUN.DLL除外),那么如果您可以这样做,我会很高兴。谢谢。