我是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
我认为问题很简单,但找不到答案,我已经在线尝试了多种解决方案,但它们通常用于处理我不了解的更为复杂的事情。任何帮助将不胜感激。
答案 0 :(得分:0)
我非常确定其中一个工作表名称键入错误,因为Error 9
表示您通过名称或位置(不存在)调用了元素,因此“超出范围”。
将工作表的名称更改为x
和y
进行测试。
关于日期:您不必担心格式。每一天都由一个整数表示。小时,分钟等是其分数。 Dates存储为浮点数(在VBA中都存储在单元格中),可以毫无问题地与其他日期或整数进行比较。