Скопировать диапазон на основе даты - PullRequest
0 голосов
/ 06 мая 2019

Я новичок в VBA, мой опыт - в основном записывать макросы и немного их адаптировать, и я играл с макросом, чтобы скопировать отфильтрованный диапазон на листе 1 на основе значения даты, расположенного в диапазоне листа 2«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 как long, string, date, но все возвращает 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 голосов
/ 06 мая 2019

Я совершенно уверен, что одно из имен рабочей таблицы введено неправильно, так как Error 9 означает, что вы назвали элемент по имени или позиции, которого нет, поэтому "вне диапазона".

Изменитьимена листов до x и y для теста.

По поводу дат: Вам не нужно беспокоиться о форматировании.Каждый целый день представлен целым числом.Часы, минуты и т. Д. Являются их долями. Даты хранятся в виде чисел с плавающей запятой (как в ячейках, так и в VBA) и могут без проблем сравниваться с другими датами или целыми числами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...