здравствуйте задача такая - форма должна открываться как для ввода новых строк в таблице, так и для редактирования существующих при запуске её поля должны автоматически заполняться значениями соответствующих ячеек выделенной перед открытием строки (в идеале - любой выделенной ячейки редактируемой строки) ну и при нажатии "редактировать" должна корректироваться эта самая строка при вводе новых строк всё понятно
отбой, разобрался))
здравствуйте задача такая - форма должна открываться как для ввода новых строк в таблице, так и для редактирования существующих при запуске её поля должны автоматически заполняться значениями соответствующих ячеек выделенной перед открытием строки (в идеале - любой выделенной ячейки редактируемой строки) ну и при нажатии "редактировать" должна корректироваться эта самая строка при вводе новых строк всё понятно
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Set LO = Nothing End Sub
Private Sub ИмяПациента_Change()
End Sub
Private Sub ИмяТовара_Change()
End Sub
Private Sub КачествоТовара_Change()
End Sub
Private Sub КоличествоТовара_Change()
End Sub
Private Sub UserForm_Initialize() Set LO = [Таблица2].ListObject With LO If Intersect(.DataBodyRange, Selection) Is Nothing Then Set LO = Nothing Exit Sub End If index = Selection.Row - .HeaderRowRange.Row With .ListColumns Me.ИмяПациента = .Item("Имя").DataBodyRange(index) Me.ИмяТовара = .Item("Товар").DataBodyRange(index) Me.КоличествоТовара = .Item("Количество").DataBodyRange(index) Me.КачествоТовара = .Item("Качество").DataBodyRange(index) End With End With End Sub
Private Sub Редактура_Click() LO.ListRows(index).Range = Array(ИмяПациента, ИмяТовара, КоличествоТовара, КачествоТовара) End Sub
Private Sub ОчисткаФормы_Click() Me.ИмяПациента = Empty Me.ИмяТовара = Empty Me.КоличествоТовара = Empty Me.КачествоТовара = Empty End Sub
Private Sub СозданиеНового_Click() LO.ListRows.Add.Range = Array(ИмяПациента, ИмяТовара, КоличествоТовара, КачествоТовара) End Sub
Private Sub Выход_Click() Unload Me End Sub
[/vba]
на всякий случай [vba]
Код
Option Explicit
Private LO As ListObject Private index%
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Set LO = Nothing End Sub
Private Sub ИмяПациента_Change()
End Sub
Private Sub ИмяТовара_Change()
End Sub
Private Sub КачествоТовара_Change()
End Sub
Private Sub КоличествоТовара_Change()
End Sub
Private Sub UserForm_Initialize() Set LO = [Таблица2].ListObject With LO If Intersect(.DataBodyRange, Selection) Is Nothing Then Set LO = Nothing Exit Sub End If index = Selection.Row - .HeaderRowRange.Row With .ListColumns Me.ИмяПациента = .Item("Имя").DataBodyRange(index) Me.ИмяТовара = .Item("Товар").DataBodyRange(index) Me.КоличествоТовара = .Item("Количество").DataBodyRange(index) Me.КачествоТовара = .Item("Качество").DataBodyRange(index) End With End With End Sub
Private Sub Редактура_Click() LO.ListRows(index).Range = Array(ИмяПациента, ИмяТовара, КоличествоТовара, КачествоТовара) End Sub
Private Sub ОчисткаФормы_Click() Me.ИмяПациента = Empty Me.ИмяТовара = Empty Me.КоличествоТовара = Empty Me.КачествоТовара = Empty End Sub
Private Sub СозданиеНового_Click() LO.ListRows.Add.Range = Array(ИмяПациента, ИмяТовара, КоличествоТовара, КачествоТовара) End Sub