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

在Excel中编辑或导出下拉列表,excel,drop-down-menu,export,Excel,Drop Down Menu,Export,处理包含两个下拉列表的现有电子表格。是否可以从这些下拉列表中导出或编辑数据 除非有人有更好的想法,否则我已将每个项目选择到不同的单元格中,然后将其复制到csv文件中,以便导入到表中。在数据验证列表中,您可以有以下3种情况 A)指同一表格中某一范围的公式 B)使用逗号直接键入的列表 C)引用同一页/另一页中命名范围的公式 现在,我们需要满足所有三种情况,以防我们想要检索该列表 要访问数据验证单元格列表,必须使用Rng.Validation.Formula1 请参阅此代码 Sub Sample

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

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

在数据验证列表中,您可以有以下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

我已经对代码进行了注释,所以您不应该面临任何问题。如果你这样做了,你只需问:)

让我说清楚,你想将列表从数据验证列表导出到另一个工作表吗?不,xls数据正在迁移到数据库。哦,我看到你在下面编辑了答案。我的答案基于您的答案:)。我只是想补充一点,我发现如果我试图在工作表的更改事件中获取范围(MyCell.Validation.Formula1),我会得到一个错误。工作表的计算事件中存在相同的问题。我发现一种解决方法是将该位放入标准模块中的公共函数中,将单元格引用作为参数传递给它,然后从更改事件调用该函数。