Новости:

Название темы должно отражать суть задачи.
Темы типа "ПОМОГИТЕ!!!", "Срочно!" и т.п. будут удаляться без объяснения причин

Главное меню

Как заставить обновляться EditBox (Ribbon)

Автор IgorStorm, 23.01.2016, 19:59:14

« назад - далее »

IgorStorm

Всем привет. Добиваю уже свою ленту с формулами, возникла небольшая идейка - хочу создать ряд Боксов, в которые будут выводиться значения расчетов, которые происходят по событию Workbook_SheetSelectionChange (у меня там рассчитываются суммы с НДС и без НДС для текущего выделения - в боксы, чтобы удобно было копировать). Но вот проблема - editbox сам обновляться не хочет, несмотря на то, что переданная ему глобальная переменная меняется вместе с выделением, а принимает только первое переданное значение. Как победить?

Код который сейчас простой:

Public Sub EditBox(control As IRibbonControl, ByRef NDS)
   NDS = Summ1
End Sub

doober

Цитата: IgorStorm от 23.01.2016, 18:59:14Код который сейчас простой
Ответ еще проще
Процедура загрузки ленты RibbonOnLoad в xml файле прописана?
Public MyRibbon As IRibbonUI

Sub RibbonLoading(Ribbon As IRibbonUI)
    Set MyRibbon = Ribbon
End Sub
MyRibbon.InvalidateControl "EditBox"
'Где EditBox=Id этого текстбокса



IgorStorm

Опять я первый нашел ответ и опять на англицком форуме. Все оказалось не так линейно.
Во-первых нужне обработчик обновления ленты, во вторых нужно обрабатывать не только editbox.gettext но и editbox.change, в третьих нужно вставлять обработчик обновления editbox в сам макрос расчетов по событию Workbook_SheetSelectionChange, в четвертых нужно не забыть в XML схеме указать на макрос обновления ленты.
Писать код лень :)
Дам ссылку на первоисточник, там код верный, за исключением строчки Stop в первой процедуре, не знаю за чем она нужна, может опечатка, но VBA ругался.

....Работает четко.

http://www.xtremevbtalk.com/excel/312119-ribbonx-update-editbox-text-worksheet-range-button-custom-tab.html

ant89on

Вот плохо, что тебе лень писать код. Ссылка не работает!

leseal

Я так решал.....
Public AddingManagerMode As Boolean
Public ManagerNameText As String
Dim editBoxControl As IRibbonControl
Sub editManagerName_getText(control As IRibbonControl, ByRef returnedVal)
    Set editBoxControl = control
    returnedVal = ManagerNameText
End Sub

Sub ClearEditBox()
    If Not editBoxControl Is Nothing Then
        ManagerNameText = ""
        ribbon.InvalidateControl (editBoxControl.ID)
    End If
End Sub

Яндекс.Метрика Рейтинг@Mail.ru