Vba 比较并选择Excel宏
我有2张excel工作表。在一张纸(sh1)上,我有B列和日期,D列和数字 我希望有一个宏,如果列范围D:I中的一个单元格包含值“2”,单击该单元格将获得属于该单元格行的日期值,并将其与我的另一个工作表(sh2)中的日期值进行比较 第二张表中的日期值也在B列中 到目前为止,我所拥有的:Vba 比较并选择Excel宏,vba,excel,vlookup,Vba,Excel,Vlookup,我有2张excel工作表。在一张纸(sh1)上,我有B列和日期,D列和数字 我希望有一个宏,如果列范围D:I中的一个单元格包含值“2”,单击该单元格将获得属于该单元格行的日期值,并将其与我的另一个工作表(sh2)中的日期值进行比较 第二张表中的日期值也在B列中 到目前为止,我所拥有的: Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Date1 As
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Date1 As Date
Date1 = Range("B" & ActiveCell.Row).Value
If Selection.Count = 1 Then
If Selection.Value = 2 Then
If Not Intersect(Target, Range("D:I")) Is Nothing Then
MsgBox Date1
End If
End If
End If
End Sub
此代码已将变量指定给属于所单击单元格的行的日期。我陷入了将变量与第二页中的日期进行比较的部分
最后,我想这样做,当它在第二个工作表中找到匹配项时,它会选择该行。您的代码已修改:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Date1 As Date
Date1 = Range("B" & ActiveCell.Row).Value
If Selection.Count = 1 Then
If Selection.Value = 2 Then
If Not Intersect(Target, Range("D:I")) Is Nothing Then
foundDate = Date1
Call findDateOnSheet2
End If
End If
End If
End Sub
以及(可能的解决方案)您需要在表2中找到的行:
Option Explicit
Public foundDate As Date
Sub findDateOnSheet2()
Dim i As Long
i = 1
Do While Sheets(2).Cells(i, 2).Value <> ""
If Sheets(2).Cells(i, 2).Value = foundDate Then
Sheets(2).Activate
Sheets(2).Rows(i).Select
Exit Do
End If
i = i + 1
Loop
End Sub
选项显式
公开日期为日期
子findDateOnSheet2()
我想我会坚持多久
i=1
Do While工作表(2).单元格(i,2).值“”
如果表(2).单元格(i,2).值=foundDate,则
第(2)页。激活
第(2)页。第(i)行。选择
退出Do
如果结束
i=i+1
环
端接头
EDIT1:
也许你的测试表和我的测试表看起来不一样。您应该根据工作表的结构修改我的代码中的起始值和/或其他参数
我的第一页:
第二个呢
如果我错了,请纠正我。我创建了一个新模块(模块1),其中包含子FindDateOnSheet2。使用
Application.Run“Module1.findDateOnSheet2”
从工作表\u SelectionChange子调用它,但什么也没发生。.您不需要Application.Run“Module1.findDateOnSheet2”
。如果您使用我的工作表覆盖代码,请更改(…)
,并使用您编写的myfindDateOnSheet2()
创建模块。然后只需单击第一张工作表上的单元格。如果你点击一个数字2,它会自动选择它找到所选日期的行。这对我不起作用。如果我在foundDate变量上放一块手表,它会显示该变量的值超出范围。我编辑了我的答案并向您展示了我的工作表。。。我希望它能帮上大忙,当我开始摆弄I变量时,我发现了它,我必须将它设置为3,因为我在实际数据上方有2行不相关的行。