【问题标题】:Double click on cell and find value another sheet双击单元格并在另一张纸上查找值
【发布时间】:2019-01-10 15:51:25
【问题描述】:

我正在尝试在网上搜索可以帮助我的 VBA 代码,但我找不到任何东西。

我想做什么:

  • 在同一个工作簿中,我有两张工作表。
  • 在工作表 1 中,A 列包含批次值(仅限数字)。
  • 在工作表 2 中,包含这些值(有时是相同值的 1 倍以上)的 A 列以及其他列中的更多信息。

到目前为止,还好。

我需要的是,当我在工作表 1 中双击其中一个值时,excel 仅在工作表 2 中显示相同的值(不仅是第一次出现),而隐藏其他值。

例子:

Sheet 1
Column A
123
124
125
126

Sheet 2
Column A
123
124
123
125
123
126

当单击表 1 中值为 123 的单元格时,Excel 仅在表 2 中显示具有相同值的行,隐藏其他值。

我不知道如何编码。但是,我认为可以使用此代码。唯一的问题。它在弹出框中返回第一次出现的行号。我需要的是,Excel 在工作表中显示建立的值。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'If you select more than one cell, ignore
If Target.CountLarge > 1 Then Exit Sub

'If you select a blank cell, ignore
If Target.Value = vbNullString Then Exit Sub

Dim Finder, ClickRange

'We want the event to fire if you click in column A anywhere
Set ClickRange = Sheets("Sheet1").Range("A:A")

'If you click somewhere else, ignore
If Intersect(Target, ClickRange) Is Nothing Then Exit Sub

'Look for the value in sheet 2 column A
Set Finder = Sheets("Sheet2").Range("A:A").Find(Target.Value, LookAt:=xlWhole)

'If we don't find it, Exit Sub
If Finder Is Nothing Then Exit Sub

'To display the row:
MsgBox (Finder.Row)

'To Select it:
'If we find it, select sheet 2 and select the cell
'Sheets("Sheet2").Activate
'Finder.Select

End Sub

【问题讨论】:

  • 能否请edit your question 向我们提供样本数据、预期结果、您迄今为止尝试过的内容以及未能达到预期的原因?
  • 欢迎来到 Stack Overflow!你会发现如果你花点时间去Stack Overflow tour,你会有更好的体验。您还可以阅读有关询问good question 的信息。如果您遵循 Stack Overflow 社区的规范并以帮助他人的态度来对待它,它将为您提供良好的服务。
  • 首先,工作表没有双击事件。例如,您需要为此选择一个值并单击一个按钮。其次,您可以使用Selection.Value 读取该值,然后在您的sheet2 上使用该值执行AutoFiter。如果你在这里或谷歌搜索,你会发现很多教程如何在 VBA 中使用自动筛选。试一试,然后返回您的代码尝试告诉您卡在哪里或错误。
  • 没有固定代码供您复制和粘贴并使其工作。您将不得不编写代码。如果您遇到特定问题,请随时返回并询问该特定问题。现在这个问题读起来像“为我写代码,这是我的规范”,这对于 Stackoverflow 问题来说太宽泛了。

标签: excel vba


【解决方案1】:

使用Range.AutoFilter method 根据工作表 1 中的选定值过滤工作表 2 中的数据。

Option Explicit

Public Sub FilterBySelectedValue()
    Dim wsFilter As Worksheet
    Set wsFilter = ThisWorkbook.Worksheets("Sheet2")

    wsFilter.UsedRange.AutoFilter Field:=1, Criteria1:=Selection.Value
    wsFilter.Activate 'switch to filtered sheet
End Sub

只需在工作表 1 中选择一个值,然后通过按钮或键盘快捷键运行宏。我强烈建议不要使用Worksheet_SelectionChange 事件,否则您的工作表 1 很容易变得无法使用。

因此,在工作表 1 中使用以下选定值……

...运行程序后,表 2 的结果将显示:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多