【问题标题】:Extracting the item from a DICTIONARY in VBA从 VBA 中的字典中提取项目
【发布时间】:2016-11-29 11:04:25
【问题描述】:

我创建了一个存储工作表名称及其编号的字典。

所以代码如下:

Sub SetDiction()

Dim num as Excel.Range
Dim wks As Excel.Worksheet

For each wks in ThisWorkbook.Worksheets
Set num = Nothing
Set num = wks.Range("SheetNumber")
If not(num is Nothing) Then
rModule.rDictionary.Add:=num.Value Item:=wks
End If

下一步 结束子

现在正在尝试获取 wks 名称并将其放入另一个工作表中。代码是:

Sub GetSheet()
Dim key as variant

For each key in rModule.rDictionary.Keys
With Sheet2
  .Cells(2,1).Value = rModule.rDictionary.Item(key)
End With
End Sub

它给了我应用程序定义或对象定义的错误。 有人可以帮忙吗?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您的 .Add 调用在语法上不正确,您正在将整个 工作表 添加到字典中,大概您只想添加命名范围,更改为:

    rDictionary.Add num.Value, num
    

    添加名称:

    rDictionary.Add num.Value, wks.Name
    

    【讨论】:

    • num 是一个 excel 范围。我想要从“SheetNumber”范围中提取的作为 sheetnumber 的键并作为键添加到字典中。作为与此键对应的项目,我想要与该工作表编号对应的工作表名称。
    • 为名称添加 wks.Name 作为字符串
    • Alex 我正在尝试使用代码将此名称分配给工作表:set sht.Name= rModule.rDictionary(key)。将错误显示为对象或未定义块变量。你能告诉我我哪里出错了吗?
    • 删除set,它只在分配对象时使用,Name只是一个字符串。
    • 我尝试使用 wks.Name=rModule.rDictionary(key) 进行操作,但仍然显示相同的错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    相关资源
    最近更新 更多