Я некоторое время размышлял об этом.
Допустим, у меня есть формула в A1, Worksheet ("Main")
=IF(B2="English";"Good morning";"Guten Morgan")
Затем у меня есть пользовательская форма с кодом:
Private Sub TextBox1_Change()
ThisWorkbook.Worksheets("Main").Range("A1").Value = Me.TextBox1.Text
End Sub
Private Sub UserForm_Initialize()
Me.TextBox1.Text = ThisWorkbook.Worksheets("Main").Range("A1").Value
End Sub
Как мне сделатьэто работает так, что, если я ничего не введу в текстовое поле, он будет продолжать отображать результат функции. Если я начну печатать текст в текстовом поле, он введет мой набранный текст в A1. Теперь, если я открою пользовательскую форму, она перезапишет A1 текстом в текстовом поле, и формулы больше не будет. Поэтому, если я поменяю язык в B2, результат больше не будет отображаться в текстовом поле.
Может быть и другой подход с VBA. Все приемлемо, пока логика будет работать.
Я пытался правильно использовать текстовое поле, что-то вроде связанного источника или аналогичного, но иногда это приводит к сбою книги Excel. Вот почему я пытаюсь избежать этого.
РЕДАКТИРОВАТЬ:
Спасибо за предложения! Я пытался реализовать это как-то, но до сих пор не понимаю. Я создаю переменную, в которой я хочу сохранить результат из ThisWorkbook.Worksheets("Other Data").Range("L49").Value
, тогда я хотел бы использовать его в Userform Me.TextBox14.Text
для отображения. Затем, после того, как он был изменен в Me.TextBox14.Text и нажата кнопка Enter, он должен измениться также в ThisWorkbook.Worksheets("Other Data").Range("L49").Value
.
Вот мой текущий код, с которым я пытаюсь играть:
Private ProjectClass As String
Private Sub TextBox14_Enter()
ThisWorkbook.Worksheets("Other Data").Range("L49").Value = ProjectClass
End Sub
Private Sub UserForm_Initialize()
Me.TextBox14.Text = ProjectClass
End Sub