根据日期复制范围

时间:2019-05-06 19:05:05

标签: excel vba

我是VBA的新手,我的经验是基本上记录宏并对其进行一些调整,并且我一直在玩一个宏以根据位于工作表2范围内的日期值在工作表1中复制过滤范围“ C42”,复制部分正在工作

我尝试了一些在互联网上找到的解决方案,但是它们对我不起作用,而且我也找不到错误(可能很简单,但是由于缺乏知识,我无法找到它)

Sub CopyPaste

If Worksheets("Costos Médicos").Range("C42") =  Worksheets("CC1").Range("B101") Then 'both values are visually in date format "dd/mm/yyyy" but if changed to general give a number

    Call Cost1 'This is a macro currently working

    ElseIf Worksheets("Costos Médicos").Range("C42") =  Worksheets("CC1").Range("B102") Then

    Call Cost2 'This one also works fine

end if

End Sub

'我也尝试过此操作,我尝试将cm声明为长字符串,日期,但是所有返回值error 9(仍然缺乏知识)

    Dim src As Worksheet
    Dim tgt As Worksheet
    Dim cm0 As Range
    Dim cm1 As Range
    Dim cm2 As Range

    Set src = ThisWorkbook.Sheets("CC1")
    Set tgt = ThisWorkbook.Sheets("Costos Médicos")
    Set cm0 = src.Range("C42")  'This is the given date
    Set cm1 = tgt.Range("B101") 'This is a date
    Set cm2 = tgt.Range("B102") 'This is another date

If cm0 = cm1 Then
    Call Cost1 'this Works fine by itself
ElseIf cm0 = cm2 Then
    Call Cost2 'this also Works
End If

我认为问题很简单,但找不到答案,我已经在线尝试了多种解决方案,但它们通常用于处理我不了解的更为复杂的事情。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我非常确定其中一个工作表名称键入错误,因为Error 9表示您通过名称或位置(不存在)调用了元素,因此“超出范围”。

将工作表的名称更改为xy进行测试。

关于日期:您不必担心格式。每一天都由一个整数表示。小时,分钟等是其分数。 Dates存储为浮点数(在VBA中都存储在单元格中),可以毫无问题地与其他日期或整数进行比较。