【问题标题】:finding the original address of the data from a dropdown in vba从 vba 的下拉列表中查找数据的原始地址
【发布时间】:2021-02-22 21:29:36
【问题描述】:

美好的一天

我正在寻找一种方法来查找用于在 vba 中创建下拉列表的数据地址。下拉菜单是使用代码创建的:

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="='" & ws.Name & "'!" & range1.Address

下拉代码被多次使用,我需要找到一种方法来找到用于公式 1 代码的工作表。这将帮助我稍后在我的代码中创建引用该工作表的案例。 请看附图:

选择选定的 a 或 b 值然后由代码运行

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("J9:J15")) Is Nothing Then
Select Case Target
    Case "a": hala
    Case "b": toets_my_ws
End Select

End If

当我选择其中一个宏时,我需要它来查找已验证数据的工作表。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    再次编辑:我认为这将更容易集成为一个函数 - 如果你想找到你的 Target 单元格的源范围。

    例如:

    Dim rngSource As Range
    '...
    Set rngSource = ListSourceRange(Target)
    If Not rngSource Is Nothing then
        rngSource.Parent.Activate  'do something with rngSource...
    End If
    '...
    

    功能:

    'Given a cell, see if it has a validation list, and
    '  try to get the source range for the list
    Function ListSourceRange(c As Range) As Range
        Dim vType, rng As Range
        On Error Resume Next       'ignore error if no validation
        vType = c.Validation.Type
        On Error GoTo 0            'stop ignoring errors
        
        If vType = 3 Then
            'try to get a source range...
            On Error Resume Next
            Set rng = Range(c.Validation.Formula1)
            On Error GoTo 0
        End If
        Set ListSourceRange = rng 'source range, or Nothing if no range found
    End Function
    

    【讨论】:

    • 我尝试在宏中使用此代码来检查是否选择了值 A 它应该运行此代码,但似乎没有发生任何事情
    • 抱歉,刚刚更新修复了一些问题。您究竟是如何尝试使用代码的?您可能需要进行一些调整以使其适合您当前的代码,但您还没有真正提供详细信息...
    • 好的,所以我创建了 2 个宏“hala”和“toets_my_ws”,hala 是您的代码,“toets_my_ws”只是选择下拉列表旁边的单元格的代码,以查看我的选择代码是否适用于下拉列表.如果我使用“b”作为选择,我的宏会选择与下拉列表相关的单元格,但如果我选择“a”,hala 宏不会运行 'If Not Intersect(Target, Range("J9:J15")) Is Nothing Then Select Case Target Case "a": hala Case "b": toets_my_ws End Select End If 是我在下拉列表中用于选择的代码
    • 抱歉,我正在努力寻找在 cmets 中显示代码的方法
    • 很抱歉不是聊天爱好者。请参阅上面的编辑 - 这应该更接近您正在寻找的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多