Код VBA Добавление ячейки содержит дату, а ячейка содержит число, получая ошибку несоответствия - PullRequest
0 голосов
/ 29 июня 2018

Привет. Я пытаюсь добавить в ячейки вместе и сравнить их с другой ячейкой, но я получаю несоответствие типов. первая ячейка - это дата, добавляемая - это число «как в количестве дней», а третья сравниваемая - это тоже дата. но я получаю несоответствие типов. мой код ниже

Sub Macro1()
Macro1 Macro

    Dim wks As Worksheet
    Set wks = ActiveSheet

    Dim x As Integer
    Dim p As Integer

    Dim rowRange As Range
    Dim colRange As Range

    Dim LastCol As Long
    Dim LastRow As Long
    LastRow = wks.Cells(wks.Rows.Count, "A").End(xlUp).Row

    Set rowRange = wks.Range("A1:A" & LastRow)

    For i = 7 To 189
        p = 0
        For q = 8 To LastRow
            If [aq] = [si] Then
                If [cq] + [ui] >= [xi] Then
                    [oq] = 1
                Else
                    p = p + [dq]
                    [qq] = 0
                End If
             End If
         Next q     
     Next i   
End Sub 

[cq] - это ячейка с датой

[ui] - это ячейка, содержащая число

[xi] - это ячейка с датой

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Попробуйте как cells(q, "A") = cells(i, "S").

    For i = 7 To 189
    p = 0
    For q = 8 To LastRow
         'If [aq] = [si] Then
         If cells(q, "A") = cells(i, "S") Then
            'If [cq] + [ui] >= [xi] Then
            If cells(q, "C") + cells(i, "U") >= cells(i, "X") Then
                '[oq] = 1
                cells(q, "O") = 1
            Else
                'p = p + [dq]
                p = p + cells(q, "D")
                '[qq] = 0
                cells(q, "Q") = 0
            End If
         End If
         Next q

      Next i   
0 голосов
/ 29 июня 2018

Вам необходимо использовать функцию «DateAdd». Инструкции здесь: https://www.techonthenet.com/excel/formulas/dateadd.php

Пример:

Sub add_dates()


    Dim dateOne As Date
    Dim dateTwo As Date
    Dim lngDays As Long


    dateOne = "1/1/2018"
    lngDays = 2
    dateTwo = "1/3/2018"

    Dim result As Boolean
    If DateAdd("d", lngDays, dateOne) >= dateTwo Then
        MsgBox ("Greater than or equal to")
    Else
        MsgBox ("Less than")
    End If


End Sub
...