excel 尝试创建一个数组来保存验证列表的值

x8goxv8g  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(138)

无法使用数组变量进行数据验证(下拉列表)。
还有:
1.当debug.print行被执行时,即时窗口不显示MyArray的值。
1.执行Range("A" & r).value = MyArray(r)行没有任何React,excel表仍然是空的。

Sub Testing()

    Dim ws As Worksheet
    Dim MyArray() As String
    Dim r As Integer
    Dim WsCount As Integer

    r = 1

    WsCount = ThisWorkbook.Worksheets.Count
    ReDim MyArray(1 To WsCount)

    For Each ws In ThisWorkbook.Worksheets
        MyArray(r) = ws.Name
        r = r + 1
        If r <= 12 Then
            Debug.Print MyArray(r)
            Range("A" & r).Value = MyArray(r)
        End If
    Next ws

    ActiveSheet.Cells(1, 2).Validation.Add _
    Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
          Operator:=xlBetween, Formula1:=MyArray

End Sub
erhoui1w

erhoui1w1#

首先回答您的第二个问题:
实际上,代码确实会执行,但您所做的是:
1.填充索引为r的单元格。
1.增加索引r(它现在指向数组中的空单元格)
1.将空字符串写入范围
Formula1需要逗号分隔的值(参见here),也就是字符串,而不是数组。
您可以通过这种方式轻松地更正该行代码(我删除了我认为不需要的运算符)。

ActiveSheet.Cells(1, 2).Validation.Add _
 Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
          Formula1:=WorksheetFunction.TextJoin(",", True, MyArray)

相关问题