Обновление электронной таблицы Excel из текстового поля в пользовательской форме

#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. То, что вы опубликовали, само по себе выглядит нормально, но я не вижу остальной части вашего кода, поэтому могу только догадываться, в чем проблема.