在Excel中编辑或导出下拉列表
处理包含两个下拉列表的现有电子表格。是否可以从这些下拉列表中导出或编辑数据 除非有人有更好的想法,否则我已将每个项目选择到不同的单元格中,然后将其复制到csv文件中,以便导入到表中。在数据验证列表中,您可以有以下3种情况 A)指同一表格中某一范围的公式 B)使用逗号直接键入的列表 C)引用同一页/另一页中命名范围的公式 现在,我们需要满足所有三种情况,以防我们想要检索该列表 要访问数据验证单元格列表,必须使用在Excel中编辑或导出下拉列表,excel,drop-down-menu,export,Excel,Drop Down Menu,Export,处理包含两个下拉列表的现有电子表格。是否可以从这些下拉列表中导出或编辑数据 除非有人有更好的想法,否则我已将每个项目选择到不同的单元格中,然后将其复制到csv文件中,以便导入到表中。在数据验证列表中,您可以有以下3种情况 A)指同一表格中某一范围的公式 B)使用逗号直接键入的列表 C)引用同一页/另一页中命名范围的公式 现在,我们需要满足所有三种情况,以防我们想要检索该列表 要访问数据验证单元格列表,必须使用Rng.Validation.Formula1 请参阅此代码 Sub Sample
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),我会得到一个错误。工作表的计算事件中存在相同的问题。我发现一种解决方法是将该位放入标准模块中的公共函数中,将单元格引用作为参数传递给它,然后从更改事件调用该函数。