Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

30 Октябрь 2020, 22:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Отмена предыдущей отметки списка при новом выборе  (Прочитано 537 раз)
0 Пользователей и 1 Гость смотрят эту тему.
DimS
Участник
**
Offline Offline

Сообщений: 10


« Стартовое сообщение: 15 Октябрь 2020, 14:05 »

Помогите! Честно работающий в Excel макрос (от planetaexcel.ru) отказался трудится в LO7.
Смысл его работы: в столбце А ставится метка V (далее формулами заполняются формы, сохранение и печать ),
потом следующий выбор меткой V, а предыдущая метка удаляется автоматически...

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Long
    Dim str As String

    If Target.Count > 1 Then Exit Sub
    If Target.Column = 1 Then
        str = Target.Value
        Application.EnableEvents = False
        r = Cells(Rows.Count, 2).End(xlUp).Row
        Range("A2:A" & r).ClearContents
        Target.Value = str
    End If
    Application.EnableEvents = True
End Sub
 
Понимаю, что нужно смотреть в сторону Listener и далее...

* выбор документа.xls (87.5 Кб - загружено 3 раз.)
Записан
Bigor
Мастер
*****
Offline Offline

Пол: Мужской
Сообщений: 997


« Ответ #1: 15 Октябрь 2020, 15:48 »

Добрый день. Приведенный выше макрос работает в Version: 7.0.1.2
Build ID: 7cbcfc562f6eb6708b5ff7d7397325de9e764452
CPU threads: 4; OS: Linux 5.3; UI render: default; VCL: kf5
Locale: ru-RU (ru_RU.UTF-8); ИП: ru-RU
Calc: threaded
Записан

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

Сообщений: 10


« Ответ #2: 15 Октябрь 2020, 16:14 »

если сохранить файл XLS в формате LO тоже работает? у меня нет...
Записан
Bigor
Мастер
*****
Offline Offline

Пол: Мужской
Сообщений: 997


« Ответ #3: 15 Октябрь 2020, 16:42 »

Если сохранить в ods, то работает вот так:

Код:
Option VBASupport 1
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Long
    Dim str As String
    If Target.CellFormatRanges.Count > 1 Then Exit Sub
    If Target.CellAddress.Column = 1 Then
        str = Target.Value
        Application.EnableEvents = False
        r = Cells(Rows.Count, 2).End(xlUp).Row
        Range("A2:A" & r).ClearContents
        Target.Value = str
    End If
    Application.EnableEvents = True
End Sub
Записан

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

Сообщений: 10


« Ответ #4: 16 Октябрь 2020, 07:50 »

тёмный я! ничего не выходит...Ошибка! К какому событию макрос прилепить нужно? Да, и файл нужен не мне, а новый LO7 100% там не стоит, за этим никто не следит.


* ошибка.JPG (80.81 Кб, 1114x650 - просмотрено 6 раз.)
Записан
Bigor
Мастер
*****
Offline Offline

Пол: Мужской
Сообщений: 997


« Ответ #5: 16 Октябрь 2020, 09:34 »

Вот файл с макросом проверяйте на остальных версиях. Макрос перенес в библиотеку стандарт.
Привязан к событию листа - изменение данных

* выбор документа.ods (21.01 Кб - загружено 3 раз.)
Записан

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

Сообщений: 10


« Ответ #6: 16 Октябрь 2020, 09:51 »

Действительно работает!
Только забавный глюк
нет перехода по Enter на следующую ячейку вниз в столбце A
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!