Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/заполнение полей формы значениями выделенной строки - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
заполнение полей формы значениями выделенной строки
vandervekken Дата: Пятница, 02.02.2018, 01:06 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
здравствуйте
задача такая - форма должна открываться как для ввода новых строк в таблице, так и для редактирования существующих
при запуске её поля должны автоматически заполняться значениями соответствующих ячеек выделенной перед открытием строки (в идеале - любой выделенной ячейки редактируемой строки)
ну и при нажатии "редактировать" должна корректироваться эта самая строка
при вводе новых строк всё понятно

отбой, разобрался))
К сообщению приложен файл: 9527866.xlsm (21.6 Kb)


Сообщение отредактировал vandervekken - Пятница, 02.02.2018, 01:27
 
Ответить
Сообщениездравствуйте
задача такая - форма должна открываться как для ввода новых строк в таблице, так и для редактирования существующих
при запуске её поля должны автоматически заполняться значениями соответствующих ячеек выделенной перед открытием строки (в идеале - любой выделенной ячейки редактируемой строки)
ну и при нажатии "редактировать" должна корректироваться эта самая строка
при вводе новых строк всё понятно

отбой, разобрался))

Автор - vandervekken
Дата добавления - 02.02.2018 в 01:06
krosav4ig Дата: Пятница, 02.02.2018, 05:58 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
на всякий случай
[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

Private Sub Выход_Click()
    Unload Me
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениена всякий случай
[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

Private Sub Выход_Click()
    Unload Me
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 02.02.2018 в 05:58
vandervekken Дата: Суббота, 03.02.2018, 00:24 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
на всякий случай

спрашивал не только лишь здесь
имхо
это самый красивый вариант
спасибо!
 
Ответить
Сообщение
на всякий случай

спрашивал не только лишь здесь
имхо
это самый красивый вариант
спасибо!

Автор - vandervekken
Дата добавления - 03.02.2018 в 00:24
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!