gpt4 book ai didi

vba - 无法在 VBA (Excel) 中迭代哈希表

转载 作者:行者123 更新时间:2023-12-04 23:00:32 25 4
gpt4 key购买 nike

我正在使用哈希表(引用 mscorlib.dll)。我用数据填充它,我可以获得任何项目(只要我将请求类型转换为存储在哈希表中的完全相同的类型),.ContainsValue/Key - 所有这些都有效。但我无法通过 For Each 循环遍历它。
我已经尝试了我在互联网上可以找到的所有方法(对于每个元素...,其中元素是 DictionaryEntry,通过 GetEnumerator),但没有一个有效 - 我可以通过枚举器滚动表格,但我无法达到关键也不是迭代器所在位置的值。我究竟做错了什么?
我已经通过将键设置为数字并迭代这些数字来暂时解决它,但它不起作用,因为最终会有两次相同的数字......

P.S.:我不能使用 Dictionary 而不是 Hashtable,因为我需要 ContainsKey 和 ContainsValue,并且还能够通过键或值检索项目。

编辑:我当前的代码(我正在寻找的是替换“For i”循环,所以我不需要键是我已经知道的数字)

For i = 1 To UBound(rands)
chopped_yes = Split(ThisWorkbook.Worksheets(1).Range("Z" & rands(i)))
chopped_no = Split(ThisWorkbook.Worksheets(1).Range("AA" & rands(i)))
chopped_any = Split(ThisWorkbook.Worksheets(1).Range("AB" & rands(i)))
For Each part In chopped_yes
If rules_yes.ContainsValue(cscs.item(CLng(rands(i)))) Then
validcsc = 0
GoTo WriteIt
End If
Next part
For Each part In chopped_no
If rules_no.ContainsValue(cscs.item(CLng(rands(i)))) Then
validcsc = 0
GoTo WriteIt
End If
Next part
For Each part In chopped_any
pepa = cscs.item(CLng(rands(i)))
chopped_pepa = Split(pepa, "=")
If rules_any.ContainsValue(CStr(chopped_pepa(0))) Then
validcsc = 0
GoTo WriteIt
End If
Next part
Next i

代码的作用:

cscs hashtable 包含keyword/option_value 对,一些关键字与其他关键字冲突,hashtables rules_any/yes/no 包含冲突的关键字,如果选中的是keyword=YES/NO/SOMETHING 并将validcsc 设置为0(也就是关键字的无效组合)。

rands 是一组唯一数字 - 问题是如果有多个冲突关键字,那么我没有任何数字可以设置为键,我稍后会知道并使用它来迭代

最佳答案

实际上有一种方法可以从 VBA 浏览 .NET 哈希表:

Dim hash As mscorlib.Hashtable
Set hash = New mscorlib.Hashtable

Call hash.Add("foo", "bar")
Call hash.Add(4, 8)

Dim keys As IEnumerable
Set keys = hash.keys

Dim key As Variant
For Each key In keys

Dim value As Variant

value = hash.Item(key)
Next

主要问题是将属性“Keys”的返回值“转换”为 IEnumerable 之前 在“for each”循环中使用它。 VBA 无法从头开始处理多个接口(interface)继承:您必须先转换为函数/属性所属的接口(interface),然后才能调用它。

关于vba - 无法在 VBA (Excel) 中迭代哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8677949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com