3

处理包含两个下拉列表的现有电子表格。是否可以从这些下拉列表中导出或编辑数据?

4

2 回答 2

5

在数据验证列表中,您可以有这 3 个场景。

A)引用同一工作表中某个范围的公式

在此处输入图像描述

B)使用逗号直接键入的列表

在此处输入图像描述

C)引用同一/另一张表中的命名范围的公式

在此处输入图像描述

现在我们需要满足所有三种情况,以防我们想要检索该列表。

要访问数据验证单元的列表,您必须使用Rng.Validation.Formula1

请参阅此代码。

Sub Sample()
    Dim ws As Worksheet
    Dim dvRng As Range, rng As Range
    Dim strList As String
    Dim MyAr() As String

    Set ws = ThisWorkbook.Sheets("Sheet1")
    Set dvRng = ws.Range("A1") ' Case A
    'Set dvRng = ws.Range("C1") ' Case B
    'Set dvRng = ws.Range("E1") ' Case C

    '~~> Get the formula in the data validation
    strList = dvRng.Validation.Formula1

    '~~> Check if it has an = sign for Case A and Case C
    If InStr(1, strList, "=") Then
        strList = Replace(strList, "=", "")
        Set rng = Range(strList)
        rng.Copy Sheet2.Range("A1")
    Else
    '~~> Case B
        If InStr(1, strList, ",") Then
            MyAr = Split(strList, ",")
            Sheet2.Range("A1:A" & UBound(MyAr) + 1).Resize.Value = Application.Transpose(MyAr)
        Else
            Sheet2.Range("A1").Value = strList
        End If
    End If
End Sub

我已经评论了代码,所以你不应该遇到任何问题。不过,如果你这样做,那么只需问:)

于 2013-05-07T20:16:53.787 回答
0

除非有人有更好的主意,否则我已将每个项目选择到不同的单元格中,然后将其复制到 csv 文件中,我可以在其中导入表格。

于 2013-05-07T19:35:37.090 回答