比较并选择Excel宏

时间:2017-03-21 00:26:12

标签: excel vba excel-vba vlookup

我有2个excel工作表。在一张纸(sh1)上,我有B列,其中包含日期和D列:I,带有数字。

我希望有一个宏,如果列D中的一个单元格D:I包含值" 2",单击该单元格将获取属于该行的日期值单元格和比较是我的其他工作表中的日期值(sh2)。

第二张表中的日期值也在B列中。

到目前为止我所拥有的:

    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

此代码已将变量分配给属于所单击单元格的行的日期。我被困在我将该变量与第二张表中的日期进行比较的部分。

最终,我想在第二张表中找到匹配时这样做,它会选择该行。

1 个答案:

答案 0 :(得分:0)

您的代码已修改:

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

和(可能的解决方案)你需要在sheet2上找到行:

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

<强> EDIT1:

可能你的表单看起来与我的测试表不同。您应该根据您的表格修改我的代码中的起始值和/或其他参数。结构

我的第一张纸:

My sheet1

和第二个

My sheet2