编辑或导出Excel中的下拉列表

3

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


让我明白一下,您想将数据验证列表中的列表导出到另一个工作表中? - Siddharth Rout
不,xls数据正在迁移到数据库中。 - a coder
哦,我看到你已经编辑了下面的答案。我的答案是基于你的答案的 :)。 - Siddharth Rout
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

我已经对代码进行了注释,所以你不应该遇到任何问题。如果还有问题,请直接询问:)


我只想补充一下,我发现如果我在工作表的Change事件中尝试获取Range(MyCell.Validation.Formula1),会出现错误。在工作表的Calculation事件中也有同样的问题。我发现一个解决方法是将该部分放入标准模块中的公共函数中,将单元格引用作为参数传递给它,并从Change事件调用该函数。 - Greg Lovern

0

除非有更好的想法,否则我已经将每个项目选择到不同的单元格中,然后将其复制到一个 CSV 文件中,以便可以导入到表中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接