|
获取某个单元格的数据有效性列表
子函数代码如下:
- Function GetDataValidationList(OneRng As Range) As String
- '--------------------------------------------
- ' 获取某个单元格设置的数据有效性列表
- ' 参数:
- ' OneRng,要获取数据有效性的单个单元格
- ' 返回值:
- ' 数据有效性的文本列表,以半角字符“,”间隔
- '--------------------------------------------
- '设置数据有效性,有2种方式:
- ' 1、直接在数据有效性数据验证窗口的“来源”输入框中输入。
- ' 此时:系统强制使用半角字符“,”间隔,类似于:1,2,3,4,5,6,7,8
- ' 2、在数据有效性数据验证窗口的“来源”输入框中输入公式。
- ' 使用公式则有以下情况:
- ' (1)、公式引用的单元格来自本表,此时的设置公式类似于:=$H$10:$H$14
- ' (2)、公式引用的单元格来自其他表,此时的设置公式类似于:=sheet1!$A$1:$A$8
- '--------------------------------------------
- ' 边缘码农 2024.07.10
- '--------------------------------------------
- ' 定义变量
- Dim DVFormula As String '数据有效性设置文本
- Dim LsArr() As String ' 临时分割数组
- Dim Sht As Worksheet '工作表对象
- Dim Rng As Range '临时单元格对象
- '--------------------------------------------
- On Error Resume Next
- DVFormula = OneRng.Cells(1, 1).Validation.Formula1
- If Err.Number > 0 Then
- GetDataValidationList = "未设置数据有效性"
- Exit Function
- End If
- If DVFormula <> "" Then
- If Left(DVFormula, 1) = "=" Then
- ' 数据有效性的第一个字符是=,引用公式
- DVFormula = Mid(DVFormula, 2, Len(DVFormula) - 1) ' 去掉开头的=
- LsArr = Split(DVFormula, "!")
- Set Sht = ActiveSheet
- If UBound(LsArr()) > 0 Then
- ' 分割后数组成员大于0,有两个成员,第1个成员是工作表名称
- Set Sht = Sheets(LsArr(0))
- End If
- DVFormula = ""
- For Each Rng In Sht.Range(LsArr(UBound(LsArr)))
- If Rng <> "" Then
- DVFormula = DVFormula & Rng & ","
- End If
- Next
- DVFormula = Left(DVFormula, Len(DVFormula) - 1)
- End If
- GetDataValidationList = DVFormula
- End If
- End Function
复制代码 调用方式:
- MsgBox GetDataValidationList(Range("a3"))
复制代码 或者:
- MsgBox GetDataValidationList(Range("a3:k5"))
复制代码 当参数是单元格区域时,只取单元格区域的第一个单元格。
|
评分
-
2
查看全部评分
-
|