#excel #vba #textbox #userform
#excel #vba #текстовое поле #пользовательская форма
Вопрос:
Добрый вечер всем,
Еще раз извиняюсь за то, что, вероятно, будет еще одним вопросом новичка.
У меня есть электронная таблица Excel со списком документов, содержащих такую информацию, как номер документа, название, автор и т.д. Эта электронная таблица связана с моей пользовательской формой, поэтому я могу получить всю информацию для документа и красиво отобразить ее в своей форме.
Теперь я хочу иметь возможность редактировать данные в электронной таблице из моей формы. Например, у меня есть ячейка для «Комментариев». Я хотел бы иметь возможность открыть свою форму, ввести комментарий в поле комментариев и вставить этот комментарий в ячейку комментариев в электронной таблице. Затем, при следующем использовании, когда я открываю форму для отображения данных этого документа, комментарий перезагружается и позволяет мне продолжать делать дополнительные комментарии.
Я попробовал следующий код:
Private Sub txtcomment_Change()
Dim DOCUMENT As String
DOCUMENT = TPForm.TP_No_text.Text
Dim Search_Range As Range
Set Search_Range = Worksheets("Sheet 1").Range("B1:v107")
Dim matchRow
matchRow = Application.Match(DOCUMENT, Search_Range.Columns(1), 0)
If Not IsError(matchRow) Then
Dim comment As Range
Set comment = Search_Range.Cells(matchRow, 21)
comment.Value = txtcomment.Text
End If
End Sub
Такого рода работы, когда я ввожу комментарий в текстовое поле комментариев, он вставляет его в ячейку для информации о документе, которую я открыл, но затем, если я закрою эту пользовательскую форму и открою другой документ в пользовательской форме, он помещает тот же комментарий в этот документ, а также в следующий иследующий. Затем, когда я удаляю его непосредственно из электронной таблицы и снова открываю пользовательскую форму, комментарий все еще там.
Кто-нибудь знает, как это сделать правильно?
Прошу прощения, если я не совсем ясно выразился. Спасибо Джеймс
Комментарии:
1. Что такое
TPForm
? Это пользовательская форма? Обычно безопаснее использоватьMe
внутри пользовательской формы для ссылки на саму себя. «Затем, когда я удаляю его непосредственно из электронной таблицы и снова открываю пользовательскую форму, комментарий все еще там» — где «там»? — на листе или в пользовательской форме ? При выгрузке / загрузке записи в вашу форму вы можете установить флаг, чтобы предотвратить запуск этих «автообновлений» во время выгрузки / загрузки записи.2. Спасибо за ваш ответ. Да, ‘TPForm’ — это имя пользовательской формы, в которой находится текстовое поле, поэтому ‘TPForm. TP_No_Text’ — это, по сути, макрос, который ищет заголовок документа в электронной таблице. Когда я говорю «там», я имею в виду, что он все еще находится в пользовательской форме, хотя я удалил его из электронной таблицы. Как вы устанавливаете флаг, как вы упоминаете
3. Вы можете установить глобальную переменную
bUpdating
, например, например, и установить значение True при загрузке записи. Внутриtxtcomment_Change
вы можете проверить это перед внесением каких-либо изменений.4. Хорошо — решит ли это проблемы, с которыми я сталкиваюсь?
5. То, что вы опубликовали, само по себе выглядит нормально, но я не вижу остальной части вашего кода, поэтому могу только догадываться, в чем проблема.