Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
24.04.2024, 15:54:28

Войти
Название темы должно отражать её содержание.
Темы типа "ПОМОГИТЕ!!!", "Срочно!", "Не получается сделать", "Нужна помощь" и т.п. будут удаляться без объяснения причин
33 242 Сообщений в 5 457 Тем от 6 761 Пользователей
Последний пользователь: Halfdoor
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Макрос Excel удаляет нужные ячейки
Страниц: [1]   Вниз
Печать
Автор Тема: Макрос Excel удаляет нужные ячейки  (Прочитано 2155 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Merlicka
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 1


Просмотр профиля E-mail
« : 02.02.2021, 19:38:32 »

Добрый день, друзья. Нужна помощь в исправлении макроса. Макрос копирует из листа 1 на лист 2 столбцы A,B,C при условии, если заполнен столбец A. Однако, если попробовать написать на листе 2 что-нибудь в столбцах D, E, F и тд, и перейти со 2 листа на 1, то он стирает все, что было написано на 2 листе. Как можно исправить макрос, чтобы он копировал нужные ячейки на лист 2 и не стирал с него всё остальное?

Код: (vb)
Private Sub Worksheet_Activate()
    Dim a(), i&, ii&, x&
    a = Sheets(1).UsedRange.Value
    ReDim b(1 To UBound(a, 1), 1 To UBound(a, 1))
    For i = 1 To UBound(a)
        If Len(a(i, 1)) Then
            ii = ii + 1
                b(ii, 1) = a(i, 1) 'столбец A
                b(ii, 2) = a(i, 2) 'столбец B
                b(ii, 3) = a(i, 3) 'столбец C
        End If
    Next
    [a1].Resize(ii, UBound(b, 1)) = b
End Sub
Записан
vikttur
Глобальный модератор
Ветеран
*****

Репутация: +124/-0
Офлайн Офлайн

Сообщений: 1 816



Просмотр профиля
« Ответ #1 : 02.02.2021, 19:59:37 »

Владелец этого сайта отвечает вам в Вашей теме. Зачем по сети пошли гулять? А если уж пошли, то нужно самостоятельно давать ссылки на обсуждение вопроса.
Записан
Федя Пробкин
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 9


Просмотр профиля E-mail
« Ответ #2 : 15.02.2021, 09:30:09 »

Ошибка в определении размерностей массива. Я исправил вроде работает
Код: (vb)
Private Sub Worksheet_Activate()
    Dim a(), i&, ii&, x&
    a = Sheets(1).UsedRange.Value
    ReDim b(1 To UBound(a, 2), 1 To UBound(a, 1))
    For i = 1 To UBound(a, 2)
        If Len(a(i, 1)) Then
            ii = ii + 1
                b(ii, 1) = a(i, 1) 'ñòîëáåö A
                b(ii, 2) = a(i, 2) 'ñòîëáåö B
                b(ii, 3) = a(i, 3) 'ñòîëáåö C
        End If
    Next
    [a1].Resize(ii, UBound(b, 1)) = b
End Sub
« Последнее редактирование: 15.02.2021, 09:37:41 от vikttur » Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru