Страницы: 1
RSS
Ошибка 1004 в цикле If, При переносе данных с листа на лист и попытке сравнения ячеек выдает ошибку 1004
 
Пытаюсь создать макрос по переносу данных  с "Лист3" на "Лист1". При переносе данных они поочередно  сохраняются в трех ячейках на "Лист1". Далее я пытаюсь с помощью цикла If пройти по столбцу О, сравнивая их с данными в ячейке cells(1,1). При запуске макроса в строке
If Cells(row1, col1) = Cells(1, 1) Then
возникает ошибка 1004, указанная в теме. Сначала я исправил формат (числовые данные передавались в текстовом формате). Ошибка не ушла. Создал отдельный модуль, он сравнивает эти ячейки и выдает желаемый результат.
Часть кода
Код
For x = 25 To 77                   'проверка всех ячеек диапазона'
b = Cells(7, 47)

    For i = 1 To a                                     'проверка ячейки массива на соответствие номеру блока'
    v = 1
        If Cells(c, r) = b Then                        'сравнение с номером блока'
        Cells(c, r).Select
        Selection.Copy
        Sheets("Лист1").Select
        Cells(1, 1).Select
        ActiveSheet.Paste
        Selection.NumberFormat = "General"              'форматирование ячеек из текстового формата в числовой'
        Selection.Value = Selection.Value
        Sheets("Лист3").Select
            If Cells(c + 1, t) = "Сигнал, 0" Then        'проверка соответствия строки сигнал,0'
                For y = t + 1 To 45
                    
                        If Cells(c + 1, y) <> 0 Then
            
                            If v <= s Then
                        
                            Cells(c + 1, y).Select          'разделение на диапазоны идущие вверх и вниз'
                            Selection.Copy
                            Sheets("Лист1").Select
                            Cells(1, 3).Select
                            ActiveSheet.Paste
                            Cells(1, 3).Select
                            Selection.NumberFormat = "General"
                            Selection.Value = Selection.Value
                
                            
                                For z = 1 To 45

                                    If Cells(row1, col1) = Cells(1, 1) Then    'СТРОКА, ГДЕ ПРОИСХОДИТ ОШИБКА 1004'
                                    Cells(row2, col2) = Cells(1, 3)
                            
                                    col2 = col2 + 1
                                    End If
   
                                row1 = row1 - 6
                                Next z

                            Sheets("Лист3").Select
                            v = v + 1
                            Else
                            Sheets("Лист3").Select
                            Cells(c + 1, y).Select
                            Selection.Copy
                            Sheets("Лист1").Select
                            Cells(1, 4).Select
                            ActiveSheet.Paste
                            Sheets("Лист3").Select
                            End If
                        
                        End If
                    
                Next y
            End If
Число задаваемых точек, в данном случае равно 9.
Код громоздкий, но я еще учусь.
Изменено: stenka - 13.03.2025 20:49:05
 
коллега, я сам в вба 0 без палочки, но у вас там ячейка а1 сравнивается с ячейкой а1 причем на 1м листе. + Не уверен что корректно так прописывать, т.к.  rov 1 - строка 1 со столбцом тоже самое. Эквивалент cells(1,1) а не между листами ли сравнение?? просто тогда надо листы на которых сравнимые ячейки прописать, в вашем коде не вижу этого. Если фигню сказал, то прошу сторожил меня поправить.
Код
if Лист1.cells(1,1).value = лист3.cells(1,1).value

и это. Код в примере не просматривал, сорри. Т.к. зашел с телефона и в помощь мне только гугл таблици.
Изменено: Евгений Паршутин - 13.03.2025 21:32:09
 
Спасибо, ошибку отловил на отладчике. Цикл не обновлялся и переменная уходила в минус. Из-за этого и возникала ошибка.
 
опозорился))))  но в защиту себя - я изначально говорил что 0 без палки я))) на счет коллеги, это потому что мультиметр мало кто правильно называет)) спасибо за
Цитата
stenka написал:
Спасибо
за бесполезный ответ.
Изменено: Евгений Паршутин - 13.03.2025 22:23:09
Страницы: 1
Читают тему
Наверх