Vba 当用户在单元格范围内输入值时,应添加数据验证

Vba 当用户在单元格范围内输入值时,应添加数据验证,vba,excel,Vba,Excel,我知道如何根据一个单元格值向单元格添加数据验证列表,但当在单元格范围内输入值时,如何向单元格添加数据验证列表?例如,在下图中,单元格范围为D8:H19,该范围为动态范围(列不会改变,但行数会增加) 如果用户在任何单元格中输入值(以黄色D8:H19突出显示),则应在同一行a列中添加数据验证列表 有人能帮我修改一下密码吗 这是在StackExchange中多次询问的图像。试试这个。实际上在StackExchange中问了很多次。试试这个。实际上在StackExchange中问了很多次。试试这个。实际

我知道如何根据一个单元格值向单元格添加数据验证列表,但当在单元格范围内输入值时,如何向单元格添加数据验证列表?例如,在下图中,单元格范围为D8:H19,该范围为动态范围(列不会改变,但行数会增加)

如果用户在任何单元格中输入值(以黄色D8:H19突出显示),则应在同一行a列中添加数据验证列表

有人能帮我修改一下密码吗


这是在StackExchange中多次询问的图像。试试这个。

实际上在StackExchange中问了很多次。试试这个。

实际上在StackExchange中问了很多次。试试这个。

实际上在StackExchange中问了很多次。试试这个。

验证。Add
方法用于使用vba验证数据。Add方法用于使用vba验证数据。Add方法用于使用vba验证数据。Add方法用于使用vba验证数据。Add方法用于使用vba验证数据。Add方法用于使用您可以创建的vba验证数据工作表事件过程,当工作表中的单元格或单元格块的内容更改为以下内容时,该过程将自动执行:

  • 确定您的动态参考范围
  • 查找正在更改的单元格或单元格块与参考范围之间的交点
  • 如果这个交叉点实际上返回了一个范围,那么在这个范围内的每个单元格中循环并执行您的操作
以下是一个您可以使用的框架-将其粘贴在工作表代码模块中,并用您想要的代码完成:

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim rngInput As Range
    Dim rngTotal As Range
    Dim rngIntersect As Range
    Dim lgInputLastRowNum As Long

    Set rngTotal = Range("A:A").Find(what:="Total", LookAt:=xlPart, MatchCase:=False)

    If rngTotal Is Nothing Then
        MsgBox "No TOTAL found. Exit Sub"
        Exit Sub
    End If

    lgInputLastRowNum = rngTotal.row - 1

    Set rngInput = Range("D8:H" & lgInputLastRowNum)

    Set rngIntersect = Intersect(Target, rngInput)

    If Not rngIntersect Is Nothing Then
        For each cell in rngIntersect
            'Do your thing here
            'To select the cell in column A on the same row as your cell
            'do Range("A" & cell.row)
        Next cell
    End If

End Sub

您可以创建一个工作表事件过程,当工作表中的单元格或单元格块的内容更改为以下内容时,该过程将自动执行:

  • 确定您的动态参考范围
  • 查找正在更改的单元格或单元格块与参考范围之间的交点
  • 如果这个交叉点实际上返回了一个范围,那么在这个范围内的每个单元格中循环并执行您的操作
以下是一个您可以使用的框架-将其粘贴在工作表代码模块中,并用您想要的代码完成:

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim rngInput As Range
    Dim rngTotal As Range
    Dim rngIntersect As Range
    Dim lgInputLastRowNum As Long

    Set rngTotal = Range("A:A").Find(what:="Total", LookAt:=xlPart, MatchCase:=False)

    If rngTotal Is Nothing Then
        MsgBox "No TOTAL found. Exit Sub"
        Exit Sub
    End If

    lgInputLastRowNum = rngTotal.row - 1

    Set rngInput = Range("D8:H" & lgInputLastRowNum)

    Set rngIntersect = Intersect(Target, rngInput)

    If Not rngIntersect Is Nothing Then
        For each cell in rngIntersect
            'Do your thing here
            'To select the cell in column A on the same row as your cell
            'do Range("A" & cell.row)
        Next cell
    End If

End Sub

您可以创建一个工作表事件过程,当工作表中的单元格或单元格块的内容更改为以下内容时,该过程将自动执行:

  • 确定您的动态参考范围
  • 查找正在更改的单元格或单元格块与参考范围之间的交点
  • 如果这个交叉点实际上返回了一个范围,那么在这个范围内的每个单元格中循环并执行您的操作
以下是一个您可以使用的框架-将其粘贴在工作表代码模块中,并用您想要的代码完成:

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim rngInput As Range
    Dim rngTotal As Range
    Dim rngIntersect As Range
    Dim lgInputLastRowNum As Long

    Set rngTotal = Range("A:A").Find(what:="Total", LookAt:=xlPart, MatchCase:=False)

    If rngTotal Is Nothing Then
        MsgBox "No TOTAL found. Exit Sub"
        Exit Sub
    End If

    lgInputLastRowNum = rngTotal.row - 1

    Set rngInput = Range("D8:H" & lgInputLastRowNum)

    Set rngIntersect = Intersect(Target, rngInput)

    If Not rngIntersect Is Nothing Then
        For each cell in rngIntersect
            'Do your thing here
            'To select the cell in column A on the same row as your cell
            'do Range("A" & cell.row)
        Next cell
    End If

End Sub

您可以创建一个工作表事件过程,当工作表中的单元格或单元格块的内容更改为以下内容时,该过程将自动执行:

  • 确定您的动态参考范围
  • 查找正在更改的单元格或单元格块与参考范围之间的交点
  • 如果这个交叉点实际上返回了一个范围,那么在这个范围内的每个单元格中循环并执行您的操作
以下是一个您可以使用的框架-将其粘贴在工作表代码模块中,并用您想要的代码完成:

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim rngInput As Range
    Dim rngTotal As Range
    Dim rngIntersect As Range
    Dim lgInputLastRowNum As Long

    Set rngTotal = Range("A:A").Find(what:="Total", LookAt:=xlPart, MatchCase:=False)

    If rngTotal Is Nothing Then
        MsgBox "No TOTAL found. Exit Sub"
        Exit Sub
    End If

    lgInputLastRowNum = rngTotal.row - 1

    Set rngInput = Range("D8:H" & lgInputLastRowNum)

    Set rngIntersect = Intersect(Target, rngInput)

    If Not rngIntersect Is Nothing Then
        For each cell in rngIntersect
            'Do your thing here
            'To select the cell in column A on the same row as your cell
            'do Range("A" & cell.row)
        Next cell
    End If

End Sub

非常感谢你。这对我有帮助。非常感谢。这对我有帮助。非常感谢。这对我有帮助。非常感谢。这对我有帮助。