Ошибка времени выполнения 13’несоответствие типа VBA excel

#excel #vba #type-mismatch

#excel #vba #несоответствие типа

Вопрос:

Это код, который пытается изменить цвет фона некоторых ячеек в зависимости от условия. Это работало на компьютере друга, где я создал код, но когда я отправил его на свой компьютер и запустил, появилось сообщение о несоответствии типа.

Отладчик останавливается на ячейках назначения (i, j).Интерьер.Цвет = RGB (0,255,0)

Может быть, это проблема совместимости с версией Excel???

 Sub Acumuladores()

Dim j As Integer
Dim i As Integer
Dim Title As String
Dim numColumnas As Integer

numColumnas = 36

j = 1
Do While j < numColumnas
    Title = Cells(1, j)
    i = 1
    Do While Cells(i, 1) <> ""
        i = i   1
        If (i Mod 2 = 0) Then
            If (Title = "PV" Or Title = "PPALUNITCCY1" Or Title = "PPALUNITCCY1" Or Title = "IMPORTE_TOTAL_ACUMULADO" Or Title = "FXFORWARDPPAL" Or Title = "FXFORWARDRATE" Or Title = "FXFWDVTO") Then
               If Cells(i, j) = -Cells(i   1, j) Then
                    Cells(i, j).Interior.Color = RGB(0, 255, 0)
                Else
                    Cells(i, j).Interior.Color = RGB(255, 0, 0)
                End If
            End If
            If (Title = "TIPOEMISION" Or Title = "STARTDATE" Or Title = "MATURITYDATE" Or Title = "DESCRIPTION" Or Title = "CECACUMTIPO" Or Title = "CECACUMRATIO" Or Title = "CECACUMRATIO1" Or Title = "CECACUMNOBS" Or Title = "CECACUMFREQ" Or Title = "CECACUMSTRIKE" Or Title = "CECACUMBARRERA") Then
                If Cells(i, j) = Cells(i   1, j) Then
                    Cells(i, j).Interior.Color = RGB(0, 255, 0)
                Else
                    Cells(i, j).Interior.Color = RGB(255, 0, 0)
                End If
            End If
        End If
    Loop
    j = j   1
Loop

End Sub
  

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

1. У вас есть -Cells(i 1, j) . - Вероятно, это ваша проблема.

2. Cells(i,j).Interior.Color = RGB(0,255,0) Выстрел в темноте. Поставьте точку останова в этой строке. Найдите значение i , а j затем физически проверьте эту ячейку и посмотрите, есть ли какая-либо ошибка формулы, например #N/A ? Например, если i=1 and j=1 затем вручную проверьте cells(1,1) , что есть A1 , и посмотрите, есть ли какая-либо ошибка формулы

Ответ №1:

Внутри инструкции if:

 If Cells(i, j) = -Cells(i   1, j) Then
  Cells(i, j).Interior.Color = RGB(0, 255, 0)
Else
  

У вас есть -Cells вместо Cells . Так что исправьте это с помощью:

 If Cells(i, j) = Cells(i   1, j).Value * -1Then
  Cells(i, j).Interior.Color = RGB(0, 255, 0)
Else
  

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

1. Но мне нужно сравнить ячейку с отрицательным значением следующей ячейки. Как мне это сделать? И почему это выражение не сломалось на компьютере, на котором я создал код?

2. попробуйте Cells(i 1, j).Value * -1