Поставить флажок (или иное значение) щелчком мышки

Автор Konstanta, 19 декабря 2019, 15:43

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

Konstanta

Уважаемые форумчане, приветствую Вас!
Много лет работая в Excel я систематически пользовался очень удобным макросом, который выложили жители "Платнеты Excel" (Виват им!)
Если данный код разместить в исходном тексте страницы (в Excel она как объект рассматривается), то при двойном клике мышки в заданном диапазоне ячеек проставляется буква "a" стилизованная шрифтом "Marlett" под галочку (флажок).
Это безумно удобно, когда идёт множественный выбор (подбор)  отдельных строк списка (накладной и пр.)
При необходимости я менял введение "a" на дату или "ОК" или иное любое значение (формулу)



Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   If Target.Cells.Count > 1 Then Exit Sub
       If Not Intersect(Target, Range("D2:J40")) Is Nothing Then
                   Target.Font.Name = "Marlett"
           If Target = vbNullString Then
               Target = "a"
           Else
               Target = vbNullString
           End If
       End If
End Sub


Видимо в силу того, что Calc по-другому работает с объектами (не нахожу их в редакторе макросов) в Calc данная штука не работает
При попытке вызова этого макроса из стандартного модуля выдаёт ошибку времени исполнения.
Есть ли мысли или может что подобное уже реализовано иначе?
На форуме ничего подобного я не нашёл.



bigor

#1
Заполняется только ячейка, на которую кликнули 2 раза? А если была заполнена то, очищается?
Значит плохо искали. Вот чуть переделанный код JohnSUN

Private Sub DblClick(oEvent as Variant)
   
    If oEvent.supportsService("com.sun.star.sheet.SheetCell") Then
    If (oEvent.RangeAddress.StartColumn >= 3) And _
    (oEvent.RangeAddress.StartColumn <= 5) And _
    (oEvent.RangeAddress.StartRow >= 1) And _
    (oEvent.RangeAddress.EndRow <= 39) Then ' В диапазоне "d2:f40"?
        newVal = oEvent.getString()
        If newval <> "" Then
        newVal = ""
        else
        newVal="V"
        end if
            oEvent.setString(newVal)
     End If
    End If
end sub

правда нужно привязать его к событию двойной клик в меню "Лист" , "События листа..."
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Konstanta

Привязал!
Отлично работает! Спасибо!
Искал по ключевым словам "клик мышки", "галочк*", "флажок" ну и прочие подобные вариации