Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据验证excel vba_Excel_Vba - Fatal编程技术网

数据验证excel vba

数据验证excel vba,excel,vba,Excel,Vba,从上面的数据来看,如何从sheet2中获取数据验证范围,因为它适用于sheet1(相同的工作表)?请求学习我想说,有两个简单的选项可以将数据从另一张工作表中拉到验证中。添加方法。以下只是一个示例,向您展示了该技术: Option Explicit Sub MakeValidationList() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") Dim dataRange As Range

从上面的数据来看,如何从sheet2中获取数据验证范围,因为它适用于sheet1(相同的工作表)?请求学习

我想说,有两个简单的选项可以将数据从另一张工作表中拉到
验证中。添加
方法。以下只是一个示例,向您展示了该技术:

Option Explicit

Sub MakeValidationList()
    Dim ws As Worksheet

    Set ws = ThisWorkbook.Sheets("Sheet1")

    Dim dataRange As Range
    Set dataRange = ws.Range("A1:A3,C1:C3")

    Dim dataList As String
    Dim entry As Variant
    For Each entry In dataRange
        dataList = dataList & entry.Value & ","
    Next entry
    '--- remove the last trailing comma
    dataList = Left$(dataList, Len(dataList) - 1)

    Dim dropDownCell As Range
    Set dropDownCell = ws.Range("B3:B10")
    dropDownCell.Validation.Delete
    dropDownCell.Validation.Add Type:=xlValidateList, _
                                AlertStyle:=xlValidAlertStop, _
                                Formula1:=dataList
End Sub
使用选项1,您可以将任何2D数组添加到验证列表中(如果内存中已经有2D数组,请删除
应用程序。Transpose


使用选项2,您可以引用连接公式中的另一个工作表。

我尝试。运行时错误1004应用程序定义或对象定义错误,您可以将vba excel示例发送给我ownindra10@gmail.com
Sub Test()

'Set your two worksheets
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Worksheets("Sheet1")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Worksheets("Sheet2")

'Set your range objects where you want a validation list
Dim rng1 As Range: Set rng1 = ws1.Range("A1")
Dim rng2 As Range: Set rng2 = ws1.Range("B1")

'Set your source range
Dim rng3 As Range: Set rng3 = ws2.Range("A1:A3")

'Set an array (for option 1)
Dim arr As Variant: arr = rng3.Value

'Option 1:
rng1.Validation.Add xlValidateList, Formula1:=Join(Application.Transpose(arr), ",")

'Option 2:
rng2.Validation.Add xlValidateList, Formula1:="='" & ws2.Name & "'!" & rng3.Address

End Sub