Так что в настоящее время я работаю над пользовательскими формами в Excel для ввода и редактирования базы данных сотрудников в моем отделе.
Примерно так:
пример базы данных
Использование пользовательской формы для ввода новых данных работает нормально. Вы просто устанавливаете значение Cells в активном листе так, чтобы оно соответствовало значению, выбранному в пользовательской форме.
Моя проблема появляется, когда я пытаюсь редактировать старые данные. В основном я сделал простую поисковую систему на основе ID #. Когда я нажимаю кнопку «Изменить», она сохраняет всю соответствующую информацию в общедоступной переменной, которую я храню в модуле под названием «Var». Вся переменная хранится в виде строки.
Dim rowsearach as Long, Name As String, BranchRegion As String, BranchProvince As String, BranchCity As String, Phone As String
rowsearch = WorksheetFunction.match(Var.editid, Range("A:A"), 0)
Var.Name = Cells(rowsearch, 2).Value
Var.BranchRegion = Cells(rowsearch, 3).Value
Var.BranchProvince = Cells(rowsearch, 4).Value
Var.BranchCity = Cells(rowsearch, 5).Value
Var.Phone = Cells(rowsearch, 6).Value
Теперь, сохранение этих значений в переменной Public работало нормально, я попытался записать их все в пустые ячейки, и это сработало.
Следующим шагом является вызов пользовательской формы редактирования (которая аналогична пользовательской форме, которую я использовал для ввода новых данных), в которой содержимое пользовательской формы будет заполнено этими переменными выше, сохраненными в модуле "Var".
Имя : текстовое поле
Область филиала : список, элемент списка обновляется во время инициализации пользовательской формы
Область провинции : список, элемент списка обновляется при изменении списка области филиала (отображаемая область зависит от того, какой регион выбран)
Город филиала : поле со списком, поле со списком обновляется при изменении списка в провинции Провинция (отображаемый город зависит от выбранной провинции)
Телефон : Текстовое поле
Моя проблема заключается в получении значения Branch Region. Вот мой код:
Private Sub UserForm_Initialize
With ListboxRegion
.Additem "West"
.Additem "Central"
.Additem "East"
.Value = Var.Region
End With
Моя проблема в области Region, в то время как пользовательская форма, по-видимому, может импортировать значение из Var.Region следующим образом (в этом примере регион имеет значение Central): pictured . На рисунке вы можете видеть, что, когда выбран центральный раздел, когда я заканчиваю редактирование через кнопку «Готово», в которой:
Cells(rowid, 3).Value = ListboxRegion.Value
Ячейки значений в ячейках (rowid, 3) будут нулевыми / пустыми. Я попытался написать код, чтобы записать значение ListboxRegion в другие ячейки, прежде чем нажать кнопку «Готово», но он также возвращает пустое значение.
Проблема, похоже, заключается в том, что пока Listbox показывает, что выбран регион, в действительности значение не сохраняется в ListboxRegion.Value
Это проблема, потому что теперь пользователь может вообще захотеть отредактировать регион и просто отредактировать другие записи, но если они не будут повторно щелкать по нужному региону снова, когда они закончат, часть базы данных Region перестанет работать .
Я не знаю, что не так с моим кодом или как я его реализую.