Страницы: 1
RSS
Вставлять макросом в текст фигуры символы отмеченного и неотмеченного флажка шрифтом Wingdings
 
Уважаемые знатоки VBA, прошу помощи!
Имеется фигура, к которой привязан макрос. Он помимо прочего должен изменять текст внутри фигуры.

Все бы ничего, но частью текста должен быть аналог флажка: в первом сценарии работы условия IF - проставленного, во втором случае - снятого.
То, что записалось макрорекордером, не работает, символы приобретают вид, как будто не присвоен Wingdings к последнему символу.
Просто прицепить вместо такой фигуры Checkbox на ActiveX  - неподходящий в моем случае вариант, поэтому пришлось танцевать с фигурой.
Файл прикрепляю.
В примере первые 2 фигуры отрисованы так, какими они должны становиться в результате срабатывания макроса. Третья фигура - это так как получилось (вернее, не получилось) у меня.
Заранее спасибо!Пример 2021-11-01.xlsb (20.84 КБ)  
Изменено: Dollinsky - 01.11.2021 02:01:41
 
А чем не устраивает стандартный флажок?
 
В стандартном не редактируется шрифт, не меняется местами место флажка относительно его подписи. И не очень понимаю, как прицепить кучу других действий, которые должен делать макрос по нажатии кнопки, помимо того, чтобы просто менять ИСТИНУ и ЛОЖЬ в привязанной ячейке. Флажок ActiveX начинает меняться в размерах по мере нажатия на него. Это лечится заданием координат как для OLE объекта, но неидеально. Если строчки левей или выше раскрыты/скрыты относительно заданного изначально параметра, но он съезжает со своего места. В общем решил остановиться на фигуре, меняя ее текст
 
Цитата
не меняется местами место флажка относительно его подписи
И давно это наступило?
У меня ещё редактируется
 
Для шрифтов Wingdings, Wingdings 2 и т.п. код символа не более 122.
Код
Sub Мяу()
    ActiveSheet.Range("B1") = Not ActiveSheet.Range("B1")
    With ActiveSheet.Shapes("Rounded Rectangle 3").TextFrame2.TextRange
        .Text = "Исправительная запись?  "
        .Font.Name = "Calibri"
        .Font.Size = 9
        If ActiveSheet.Range("B1") = 0 Then
            .Text = .Text & Chr(111)
            .Characters(.Length, 1).Font.Name = "Wingdings"
        Else
            .Text = .Text & Chr(82)
            .Characters(.Length, 1).Font.Name = "Wingdings 2"
        End If
        .Characters(.Length, 1).Font.Size = 12
    End With
End Sub
 
Спасибо, маэстро, RAN! То, что надо!
 
Цитата
Александр Моторин написал:
У меня ещё редактируется
А Вы точно как простой флажок (элемент управления формы) добавили, а не как элемент ActiveX? Для элементов ActiveX, да, редактирование всякое возможно, в т.ч. смена местами самого флажка и надписи, но они в результате последовательных нажатий уменьшаются в размерах и этот эффект наблюдается, как я читал, с 2010 версии. По крайней мере, у меня в 365 элементы ActiveX работают вот с такими проявлениями.
Страницы: 1
Наверх