Что необходимо изменить в коде, чтобы прекратилось миг...

Автор ForumOOo (бот), 14 декабря 2016, 13:43

0 Пользователи и 1 гость просматривают эту тему.

ForumOOo (бот)

Компонент: Calc
Версия продукта: 4.x
Сборка: Apache OpenOffice
ОС: Windows 10

Что необходимо изменить в коде, чтобы прекратилось мигание экрана ? Application.ScreenUpdating не помогает. В Excel всё работает нормально.
В OpenOffice, после вставки кода автонумерация, начинается мигание экрана. Знаний по написанию кода практически ноль, прошу строго не
судить.

Тестовый файл: http://forumooo.ru/attachments/upload/dokument1.ods (16.77 КБ)

--
Подпись: bsi

kompilainenn

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

bsi

#2
А в коде комментарий с автонумерации Вы сняли ? Если нет, то конечно мигать не будет. В либре тоже мигает.
Приложенный тут файл со снятым комментарием.

bsi

Короче, если в код на событие листа Private Sub Worksheet_SelectionChange(ByVal Target As Range) добавляю вот это кусок, начинает мигать экран.
'Автонумерация
Dim m&, a(), n&
   If Target.Cells.Count > 1 And Target.Column <> 2 Then Exit Sub
    a = Range("A6:B" & Cells(Rows.Count, 2).End(xlUp).Row).Value
    For m = 1 To UBound(a)
        If a(m, 2) <> "" Then n = n + 1: a(m, 1) = n Else a(m, 1) = ""
    Next
    Range("A6").Resize(UBound(a), 2) = a

mikekaganski

Полагаю, что всё же речь не о мигании экрана, а об окне программы?

Причина "моргания" листа - в том, что в момент выполнения кода Cells(Rows.Count, 2).End(xlUp).Row программа перемещает курсор в конец второго столбца (в либре - на строку 1048576). При этом, кстати, отрабатывает Ваш код на изменение выделения (Worksheet_SelectionChange). Можете поставить там точку останова для интереса.

Правильно ли это? Ну, в принципе, наверное, можно было бы сделать лучше, особенно с учётом огромных оптимизаций, сделанных в Либре (у AOO здесь печальнее). Но это - код VBA, который LO/AOO поддерживают условно. Так что если есть горячее желание это улучшить - милости просим внести посильный вклад.

Лучше бы переписать на родном для обеих программ StarBasic.
С уважением,
Михаил Каганский