VBA - 寻找约会

时间:2013-10-02 01:14:01

标签: vba excel-vba excel

我有2本工作簿book1&第二册。 book1和book2都有第一行作为日期

e.g。  书1  A B C
 1月13日 - 2月13日 - 3月13日 - 13日  1 4
 2 5
 3 6

Book2
 A B C
 1月13日 - 2月13日 - 3月13日 - 13日  1 4 3
 5 7 6
 9 8 1

我们的想法是从第1册中选择一个日期,并查看book2中是否存在日期,并将第2册列的内容复制到book1列

e.g。如果我在第1册中选择Mar-13,我应该能够在第2册中找到Mar-13并将第3册中的C3复制到C5,从第1册复制到C5。

我正在努力使用vba中的find命令,我正在使用这样的东西来查找

With ThisWorkbook.ActiveSheet.Range("A1:Z1")

    Set rngSMonthYr = .Find(What:=dtMonthYr, _
        LookIn:=xlValues, _
        LookAt:=xlWhole, _
        SearchOrder:=xlByColumns, _
        SearchDirection:=xlNext)
End With

但它根本不起作用。

1 个答案:

答案 0 :(得分:1)

确保将您的变量声明为Date类型,并确保您包含" day"部分日期。

Dim dtMonthYr As Date
dtMonthYr = #1/1/2013#  

即使您向单元格输入1/2013之类的值,Excel也会将其存储为长日期。经过测试,它确实有效。

Sub TestFindDate()
Dim rngSMonthYr As Range
Dim dtMonthYr As Date
Dim wsFind as Worksheet


dtMonthYr = #1/1/2013#   

Set wsFind = ThisWorkbook.Sheets("Sheet2") '## Modify as needed

    With wsFind.Range("A1:Z1")
    Set rngSMonthYr = .Find(What:=dtMonthYr, _
        LookIn:=xlValues, _
        LookAt:=xlWhole, _
        SearchOrder:=xlByColumns, _
        SearchDirection:=xlNext)
    End With

If rngSMonthYr Is Nothing Then
    Debug.Print dtMonthYr & " not found"
Else:
    Debug.Print rngSMonthYr.Address
End If

Emd Sub