首页 > 解决方案 > 将变体转换为字符串

问题描述

我的主工作表上有一个列表,其中包含工作簿中工作表的名称。我正在尝试迭代它们,但 Worksheets 函数需要一个字符串,并且列表中的值返回 Variant 类型。当我尝试使用 Variant 表达式访问工作表时出现类型不匹配错误。如何将 Variant 转换为 String 或者有其他方法可以做到这一点?

Dim allws As Range
Set allws = Worksheets("Summary").Range("A4:A21").Columns(1)
Dim str As String
str = allws.Item(1).Value 'Type mismatch
Set ws = Worksheets(str)

标签: excelvba

解决方案


这需要一个数组。评论中的更多细节:

Dim allws As Range
Set allws = Worksheets("Summary").Range("A4:A21") ' no need for .Columns

Dim arr() as Variant
arr = allws.Value ' read the value into a 2D Variant array

Dim i as Long
For i = Lbound(arr, 1) to Ubound(arr, 1)
    Dim ws as Worksheet
    Set ws = Worksheets(arr(i))
Next

推荐阅读