В TextBox1, должно отображаться содержимое ячейки А1. Или в формате процентов, или в текстовом, но с прикреплением значка "%" . Форма немодальная. Обновление должно быть онлайн (т.е. без повторного запуска/обновления формы) при изменении значения в ячейке А1
Всё нормально обновляется, если в TextBox1 используется прямая ссылка на ячейку А1, но тогда не знаю как поставить значек "%". Если TextBox'у присваивать значение VBA-кодом, то значек процентов ставлю, но нет обновления онлайн при изменении ячейки.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
UserForm1.TextBox1.Value = Range("A1").Value & "%"
End If
End Sub
Примерно так, файл не смотрел так-как тыкал с телефора. С тем Range("A1").Value (в самом коде) скорее всего нужно проделать какую-нибудь математическую операцию, чтобы в TextBox1 отображалось точно как и в ячейке А1. Еще возможно понадобится проверка на "открыта ли форма?" вот ссылка. --- добавлено:
Мой вариант решения
Код
'Код в модуле листа
Private Sub Worksheet_Change(ByVal Target As Range)
If IsFormLoaded("UserForm1") Then
If Not Intersect(Target, Range("A1")) Is Nothing Then
If IsNumeric(Target) Then UserForm1.TextBox1.Text = (Range("A1").Value * 100) & "%"
End If
End If
End Sub
Private Function IsFormLoaded(formName As String) As Boolean
Dim frm As Object
For Each frm In VBA.UserForms
If frm.Name = formName Then
IsFormLoaded = True
Exit Function
End If
Next frm
IsFormLoaded = False
End Function
'Код в Module1
Sub Кнопка1_Щелчок()
UserForm1.Show 0
If IsNumeric(Range("A1")) Then UserForm1.TextBox1.Text = (Range("A1").Value * 100) & "%"
End Sub
Сергей Евдокимов написал: Всё нормально обновляется, если в TextBox1 используется прямая ссылка на ячейку А1, но тогда не знаю как поставить значек "%"
У вас дефици ячеек на листе? Сошлитесь на другую, а там формулой текст набирайте который нужен.
В ячейке В1 формулой (со ссылкой на А1) собираю нужный мне текст. Все просто. TextBox берет этот текст. Показывает. Казалось бы все норм. Но ! Но при закрытии формы TextBox перезаписывает формулу в ячейке В1 на сохраненное у себя последнее значение. И всё: формулы в ячейке В1 больше нет ! Приплыли. Дальше система не работает.
Странно всё как-то. Нужно то всего, чтобы TextBox просто показывал актуальное содержимое ячейки (на запущенной немодальной форме)
DANIKOLA,спасибо. Скорее ваше решение рабочее. Но ячейка А1 будет обновляться очень часто, даже когда форма не запущена. При каждом обновлении ячейки запускать макрос пока не очень хочется. Но видимо придется, если иного решения не найду )
RAN, не. Не получается. Не работает. Та же самая проблема, что я выше описал. TextBox (даже новый-тайный-скрытый на форме) перезаписывает формулу значением. И ничего дальше не работает.
Работать будет, если конкретное значение в ячейке А1 вносить руками. TextBox его на самого себя и перезапишет. А если там будет формула (а будет там, естественно, именно формула) - то всё. Приплыли