首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA:在UBOUND中使用“String”引用具有该名称的“Array”

VBA:在UBOUND中使用“String”引用具有该名称的“Array”
EN

Stack Overflow用户
提问于 2020-12-12 17:38:37
回答 1查看 76关注 0票数 0

为什么不能使用字符串来引用UBound中的数组?

例如,如果我有一个名为"Banks“的数组,那么只有这样编写代码时,UBound才能工作

代码语言:javascript
复制
UBound(Banks)

如果我有了这个,那就行不通了:

代码语言:javascript
复制
String = "Banks"
UBound(String)

有什么解决办法吗?

也许这将有助于更具体地说明我正在努力实现的目标。

我希望用尽可能少的代码行动态计算几个数组的UBound。

考虑到我有几家银行要分析,每一家银行都有几个账户,我们的想法是通过这样做动态地计算每个银行的UBound:

代码语言:javascript
复制
'Banks
Dim Banks(1 To 5) As Variant
     Banks(1) = "GS"
     Banks(2) = "BAML"
     ...
     Banks(5) = "Citi"

'Bank Accounts
Dim GS(1 to 15) As Variant
    GS(1) = "Cash account"
    GS(2) = "Repo account"
     ...
    GS(15) = "Equities account"

Dim BAML(1 to 20) As Variant
    BAML(1) = "Prime account"
    BAML(2) = "Current account"
     ...
    BAML(20) = "FX account"

Dim Banks_Total, Banks_Count as Integer
Dim Bank As String
Dim Account_Total as Integer

Banks_Total = UBound(Banks) 

For Banks_Count = 1 to Banks_Total
Bank = Banks(Bank_Count)     
Account_Total = UBound(Bank)  

最后一行是我的窃听器所在。但如果我写的是Ubound(GS),那就完全没问题了。为什么!?

EN

回答 1

Stack Overflow用户

发布于 2020-12-13 08:12:20

下面是一个基本的例子:

代码语言:javascript
复制
Dim Banks As Object,k, num, tot
set Banks = createobject("scripting.dictionary")

Banks.Add "GS", Array("Cash", "Repo")
Banks.Add "BAML", Array("Equities","Prime","Current")

For Each k in Banks
    num = UBound(Banks(k)) + 1  'zero-based array
    Debug.Print k, num
    tot = tot + num
Next k
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65267904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档