首页 > 其他分享 >[learn from chatGPT] [vba] 如何使用 Collection 或 Dictionary 对象来代替数组

[learn from chatGPT] [vba] 如何使用 Collection 或 Dictionary 对象来代替数组

时间:2023-05-19 14:36:21浏览次数:38  
标签:vba Dictionary 元素 myArray myCollection Collection learn myDict

在 VBA 中,`Collection` 和 `Dictionary` 对象可以用来代替数组。它们的主要优点是可以动态地添加、删除和查找元素,而无需调整数组大小。下面是一个简单的例子:

```
Sub UseCollection()
Dim myCollection As New Collection

' 添加元素到 Collection 中
myCollection.Add "Apple"
myCollection.Add "Banana"
myCollection.Add "Orange"

' 遍历 Collection 中的元素
Dim item As Variant
For Each item In myCollection
Debug.Print item
Next item

' 将 Collection 转换为数组
Dim myArray() As String
ReDim myArray(0 To myCollection.Count - 1)
Dim i As Long
For i = 0 To myCollection.Count - 1
myArray(i) = myCollection(i + 1)
Next i

' 输出数组中的元素
For i = LBound(myArray) To UBound(myArray)
Debug.Print myArray(i)
Next i
End Sub
```

在上面的例子中,我们首先创建了一个 `Collection` 对象 `myCollection`,并向其中添加了三个元素。然后,我们使用 `For Each` 循环遍历 `myCollection` 中的元素,并使用 `Debug.Print` 语句输出每个元素的值。

最后,我们使用 `ReDim` 语句将数组 `myArray` 的大小调整为与 `myCollection` 中元素数量相同,并使用 `For` 循环将 `myCollection` 中的元素复制到 `myArray` 中。然后,我们再次使用 `For` 循环输出 `myArray` 中的元素。

类似地,你也可以使用 `Dictionary` 对象来代替数组,并使用 `Keys` 和 `Items` 属性来访问其中的元素。例如:

```
Sub UseDictionary()
Dim myDict As New Dictionary

' 添加元素到 Dictionary 中
myDict.Add "A", "Apple"
myDict.Add "B", "Banana"
myDict.Add "C", "Orange"

' 遍历 Dictionary 中的元素
Dim key As Variant
For Each key In myDict.Keys
Debug.Print key & ": " & myDict(key)
Next key

' 将 Dictionary 转换为数组
Dim myArray() As String
ReDim myArray(0 To myDict.Count - 1)
Dim i As Long
For i = 0 To myDict.Count - 1
myArray(i) = myDict.Items()(i)
Next i

' 输出数组中的元素
For i = LBound(myArray) To UBound(myArray)
Debug.Print myArray(i)
Next i
End Sub
```

在上面的例子中,我们首先创建了一个 `Dictionary` 对象 `myDict`,并向其中添加了三个元素。然后,我们使用 `For Each` 循环遍历 `myDict` 中的键值对,并使用 `Debug.Print` 语句输出每个键和对应的值。

最后,我们使用 `ReDim` 语句将数组 `myArray` 的大小调整为与 `myDict` 中元素数量相同,并使用 `For` 循环将 `myDict` 中的值复制到 `myArray` 中。然后,我们再次使用 `For` 循环输出 `myArray` 中的元素。

标签:vba,Dictionary,元素,myArray,myCollection,Collection,learn,myDict
From: https://www.cnblogs.com/ASKMSSC/p/17415015.html

相关文章

  • 视频课程|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
    全文链接:http://tecdat.cn/?p=32462原文出处:拓端数据部落公众号分析师:ChangZhang贝叶斯网络(BN)是一种基于有向无环图的概率模型,它描述了一组变量及其相互之间的条件依赖性。贝叶斯网络在信息不完备的情况下通过可以观察随机变量推断不可观察的随机变量,对于解决复杂的不确定性和......
  • LearnPrompt:开源的prompt学习网站
    这个GitHub开源项目,打算手把手教你成为一名提示工程师。理论与实例结合,浅显易懂,可以免费学习,关键还是中文!如果觉得GitHub界面看起来不方便,还可以到搭建好的网站里去学。即使是纯小白,有了它,学习起来也十分轻松。ChatGPT、Midjourney、StableDiffusion等热门AI工具应有尽有。......
  • Machine Learning:什么是谷歌云功能
    推荐:将NSDT场景编辑器加入你的3D工具链3D工具集:NSDT简石数字孪生行动和反应。 简而言之,这就是GoogleCloudFunctions。但是,当然,由于这并不能涵盖此服务很酷的所有方式,因此让我们更详细地介绍一下。在本文中,我将更详细地概述GoogleCloudFunctions,比较第一代和第二代环境,并讨......
  • 【图像数据增强】Image Data Augmentation for Deep Learning: A Survey
    原始题目ImageDataAugmentationforDeepLearning:ASurvey中文名称深度学习的图像数据增强:综述发表时间2022年4月19日平台arXiv来源南京大学文章链接https://arxiv.org/abs/2204.08610引言挑战在于,数据增强方法是独立于任务的。由于同时对图......
  • Jan 2023-Prioritizing Samples in Reinforcement Learning with Reducible Loss
    1Introduction本文建议根据样本的可学习性进行抽样,而不是从经验回放中随机抽样。如果有可能减少代理对该样本的损失,则认为该样本是可学习的。我们将可以减少样本损失的数量称为其可减少损失(ReLo)。这与Schaul等人[2016]的vanilla优先级不同,后者只是对具有高损失的样本给予高优......
  • sklearn之主成分分析pca
    sklearn之主成分分析pca在scikit-learn中,CA是主成分分析的缩写。主成分分析是一种常用的线性降维技术,可以将多维数据集降到较低的特征维度,并保留数据集的大部分特征信息。在sklearn中,使用PCA需要引入PCA模块,并通过实例化一个PCA对象来使用它的方法和属性。例如,可以使用PCA模块的f......
  • Short-Term Plasticity Neurons Learning to Learn and Forget
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!Proceedingsofthe39thInternationalConferenceonMachineLearning Abstract短期可塑性(STP)是一种将衰退记忆储存在大脑皮层突触中的机制。在计算实践中,STP已经被使用,但主要用于脉冲神经元,尽管理论预测它是某些......
  • Medicine River—————Learning journals 10
    DearDairy                                5.121989  Hey,Harlen,we'remeetingagain.Howhaveyoubeenlately?IheardthatyouhavedonealotofthingswithWillagain,andIfeelyouar......
  • DisCor: Corrective Feedback in Reinforcement Learning via Distribution Correctio
    发表时间:2020(NeurIPS2020)文章要点:这篇文章想说,对于监督学习来说就算刚开始训的不准,后面的新数据也会给你正确的feedback,这样的话随着训练进行,总会修正之前的错误。但是对于像Q-learning这样的强化学习任务来说,不存在这样的feedback,因为更新是通过bootstrapping的方式更新的,......
  • VBA之股票信息
    SubmyNZA()'利用IE,抓取深市股票涨跌数据Sheets("SHEET2").SelectDimIE,IEDOMAsObjectDimmyTable,myTRAsObjectSetIE=CreateObject("InternetExplorer.Application")WithIE.Visible=False.navigate"http://q.stock.sohu.com......