Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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 根据下拉列表转到行范围中的匹配单元格_Excel_Vba_Validation - Fatal编程技术网

Excel 根据下拉列表转到行范围中的匹配单元格

Excel 根据下拉列表转到行范围中的匹配单元格,excel,vba,validation,Excel,Vba,Validation,我有一个一行的名字列表,A2到AAS2,我还有一个包含所有这些名字的下拉列表。我想要一些VBA代码,当列表更改时,excel将跳转到与列表中的项目匹配的单元格。有人能帮我吗?多谢各位 名称只是文本,没有命名范围 以下是我迄今为止所尝试的: Private Sub FindTicker() Dim MyVariable As String MyVariable = Range("L1").Value Application.Goto Reference:=Range(MyVari

我有一个一行的名字列表,A2到AAS2,我还有一个包含所有这些名字的下拉列表。我想要一些VBA代码,当列表更改时,excel将跳转到与列表中的项目匹配的单元格。有人能帮我吗?多谢各位

名称只是文本,没有命名范围

以下是我迄今为止所尝试的:

Private Sub FindTicker()
   Dim MyVariable As String
   MyVariable = Range("L1").Value
   Application.Goto Reference:=Range(MyVariable)
End Sub
而且

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> [L1].Address Then
   Exit Sub
Else
   JumpToCell

End If
End Sub

Sub JumpToCell()
Dim xRg, yRg As Range
Dim strAddress As String
strAddress = ""
Set yRg = Range("A2:AAS2")
For Each xRg In yRg
'MsgBox Cell.Value
    If xRg.Value = ActiveCell.Value Then
       strAddress = xRg.Address
    End If
Next
If strAddress = "" Then
   MsgBox "The Day You Selected in Cell D4 Was Not Found On " & ActiveSheet.Name, _
    vbInformation, "Ticker Finder"
   Exit Sub
Else
   Range(strAddress).Offset(0, 1).Select
End If
End Sub
Private子工作表\u更改(ByVal目标作为范围)
如果是Target.Address[L1]。则为Address
出口接头
其他的
跳跃式电池
如果结束
端接头
子跳线单元()
Dim xRg,yRg As系列
她穿得像绳子
strAddress=“”
设置yRg=范围(“A2:AAS2”)
对于yRg中的每个xRg
'MsgBox Cell.Value
如果xRg.Value=ActiveCell.Value,则
strAddress=xRg.地址
如果结束
下一个
如果strAddress=“”,则
MsgBox“在单元格D4中选择的日期在”&ActiveSheet.Name中找不到_
VBA信息,“股票查询器”
出口接头
其他的
范围(横向)。偏移(0,1)。选择
如果结束
端接头

当我尝试使用这两种方法时,当我更改下拉列表时,什么都没有发生。没有错误或任何东西。

有很多方法可以做到这一点,通过一些调整,上面的代码可以工作,但效率有点低,比需要的更复杂。最简单的方法是使用来定位单元格:

假设您的名称下拉列表位于sheet MySheet上的单元格A1中,长列表位于列C中。使用Find方法将范围变量设置为等于单元格A1中包含项目的第一个单元格

Dim rng As Range
Dim ws As Worksheet

Set ws = Sheets("MySheet")

Set rng = ws.Range("C:C").Cells.Find(ws.Range("A1"), lookat:=xlWhole)

If Not rng Is Nothing Then ' the item was found
    rng.Select
Else
    MsgBox "This item is not in the list", vbInformation
End If

请编辑到目前为止您尝试过的内容以及与该代码相关的问题。堆栈溢出用于根据提供的代码回答特定问题,而不是提供代码。“我尝试了各种解决方案”-更具体一点总是有帮助的。你试过的一件事是什么?你试过的时候到底发生了什么?“我有一个列在一行的名字列表,A2到AAS2”它可以表示各种事情,例如命名范围。不确定你的数据是什么样子。我已经用更多信息编辑了我的帖子。我为缺乏信息而道歉。