Макрокод в Excel VBA не работает должным образом - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь написать макрос, в котором EXCEL выполняет следующие действия:

  • Изменяет данные в A1, B1, C1 и т. Д. ... на определенный формат даты (дд-мм-гггг)
  • Использует функцию DATEDIFF для вычисления дней между значениями в A1 и B1 и между A1 и C1
  • Помещает результаты этой функции DateDIFF в другую ячейку

Я получаю странные значения и сбрасываю свою функцию

Это код, который я сейчас использую, но продолжаю получать ошибки:

Private Sub CommandButton1_Click()
Range("A1:A5000").NumberFormat = "dd-mm-yyyy"
Range("B1:B5000").NumberFormat = "dd-mm-yyyy"
End Sub

Private Sub CommandButton2_Click()

Dim n As Variant
Dim Range("A1:A5000") As Date
Dim Range("B1:B5000") As Date

n = DateDiff("d", Range("A1:A5000"), Range("B1:B5000"))
n = Range("C1:C5000")

End Sub

ОБНОВЛЕНИЕ:

Ошибка в VBA = TYPE MISMATCH.

Немного больше объяснений этому:

  1. Пользователь копирует даты в первые 3 столбца (A, B, C)
  2. Мой макрос (скрипт) должен изменить эти значения в стандартный формат (дд-мм-гггг)
  3. Другая кнопка или скрипт должны рассчитывать дни между: A и BB и CA иC

  4. Дни, рассчитанные на 3, должны быть помещены в другой столбец (H или что-то), чтобы он могбыть сообщенным.

Извините, если я не был настолько ясен, я впервые использую Stackoverflow.

С уважением,

1 Ответ

0 голосов
/ 20 мая 2019

Без дополнительной информации и предположения о вашей цели ... это может помочь вам:

Private Sub CommandButton2_Click()

    Dim n As Long 'it will give you a number
    Dim LastRow As Long
    Dim C As Range

    Application.ScreenUpdating = False

    With ThisWorkbook.Sheets("SheetName") 'change this to the actual sheet name
        LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row 'last row on column A
        For Each C In .Range("A1:A" & LastRow)
            C.Offset(0, 2) = DateDiff("d", C, C.Offset(0, 1))
        Next C
    End With

    Application.ScreenUpdating = True

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