在数据验证列表中,您可以有以下 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
Run Code Online (Sandbox Code Playgroud)
我已经对代码进行了注释,因此您应该不会遇到任何问题。不过,如果您这样做,只需询问即可:)
| 归档时间: |
|
| 查看次数: |
9225 次 |
| 最近记录: |