VBA: Ошибка во время выполнения » 13 » без объяснимой причины

#excel #vba

Вопрос:

 Sub HighlightAndHalve()
    'This sub will highlight the cells which are above the threshold and also, halve the reductions based on this same condition
    Dim cell As Range, rng As Range, A As Range, LastRow As Long

    Set Sa = ThisWorkbook.Worksheets("Sales Data")
    LastRow = Cells(Rows.Count, "Q").End(xlUp).Row
    Set rng = Sheets("Sales Output").Range("Q6:Q" amp; LastRow)

    For Each cell In rng
        Set P = cell.Offset(0, -1)
        Set O = cell.Offset(0, -2)
        Set N = cell.Offset(0, -3)
        If cell.Value > 3 Then
            P.Value = P.Value / 2
            P.Interior.ColorIndex = 3
            O.Value = (N.Value   P.Value)
        End If
    Next cell
End Sub
 

По сути, в столбце Q у меня есть список наблюдателей за каждым товаром (коллекционные кроссовки). Если у них более 3 наблюдателей, то сокращение (столбец P) уменьшается вдвое. O — новая цена, N — первоначальная. Итак, в тех случаях, когда количество наблюдателей превышает 3, я хочу добавить N к P.

Понятия не имею, почему я получаю ошибки. Все ячейки заданы как общие.

Комментарии:

1. Где именно вы получаете такую ошибку несоответствия типов?

2. Значение O. = (Значение N. Значение P.)

3. LastRow рассчитывается для активного листа. Чтобы быть уверенным, что он рассчитан для нужного вам листа, вы должны полностью квалифицировать лист. LastRow = Sheets("Sales Output").Cells(Rows.Count, "Q").End(xlUp).Row . При остановке по ошибке наведите курсор на соответствующие ячейки ( N.Value P.Value ). Является ли одна из них нитью?

4. Таким образом, значение N. или значение P., вероятно, имеют разные типы. Вы проверили их значения и типы?

5. Нет…то же самое. Когда я добавляю опцию явно и определяю N, P и O как диапазон, это работает. Понятия не имею, почему . Наверное, это был вопрос с декларацией, и это его смутило?