Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2010, 02:50   #1
web_lover
 
Регистрация: 24.06.2010
Сообщений: 6
По умолчанию Ввод и корректировка данных в дин. таблице ?

Здравствуйте,
У меня такая таблица:




в форме уже есть combobox с помощью которого получаю данные об item из Table1 в textbox1,2,3.
Хочу расширить возможности формы добавляя три кнопки:-
Первая (Edit) которая поможет добавить данные из textbox1,2,3 в пустые ячейки для данного item в combobox1 или изменить данные если не корректны.
Вторая (Add) добавить новый item и его данные из textbox1,2,3 в новую строку в Table1 сверху. новый item пишется в textbox4. и здесь у меня вопрос о возможности введения нового item сразу в combobox1 вместе textbox4.
Третья (Delete) это для удаления строки из Table1 соответствующую item в combobox1.

Благодарен за ранее
Вложения
Тип файла: rar Dynamic_input_table.rar (20.5 Кб, 10 просмотров)

Последний раз редактировалось web_lover; 26.06.2010 в 03:13.
web_lover вне форума Ответить с цитированием
Старый 26.06.2010, 03:12   #2
web_lover
 
Регистрация: 24.06.2010
Сообщений: 6
По умолчанию

Забыл приложить файл
Вложения
Тип файла: rar Dynamic_input_table.rar (20.5 Кб, 17 просмотров)
web_lover вне форума Ответить с цитированием
Старый 26.06.2010, 23:00   #3
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте web_lover.
для "расширения возможности" думаю достаточно выполнить корректировку
1. удалите два контрола, TextBox4 и CommandButton3 (Delete)
2. подпись CommandButton1 измените на SAVE
3. разместите код в модуле формы
Код:
Dim q%
Private Sub CommandButton2_Click()
    q = 0
    TextBox1.Text = Empty: TextBox2.Text = Empty: TextBox3.Text = Empty
    ComboBox1 = Empty
End Sub
Private Sub CommandButton1_Click()
Dim i%
With ComboBox1
If q = 0 Then
    If Len(.Text) = 0 Then Exit Sub
    i = .ListCount: .AddItem: .List(i, 0) = .Text
    .List(i, 1) = TextBox1.Text: .List(i, 2) = TextBox2.Text: .List(i, 3) = TextBox3.Text
    q = i
ElseIf Len(.Text) = 0 Then
    .RemoveItem q
    TextBox1 = Empty: TextBox2 = Empty: TextBox3 = Empty
    q = 0
Else
    .List(q, 1) = TextBox1.Text: .List(q, 2) = TextBox2.Text
    .List(q, 3) = TextBox3.Text: .List(q, 0) = .Text
End If
Sheets(1).[a2:d6000].ClearContents
i = .ListCount + 1
Sheets(1).Range("a2:d" & i).Value = .List
End With
End Sub
Private Sub UserForm_Activate()
Dim i%
    i = WorksheetFunction.CountA(Sheets(1).[a:a])
    ComboBox1.List = Sheets(1).Range("a2:d" & i).Value
End Sub
Private Sub ComboBox1_Click()
With ComboBox1
    q = .ListIndex
    TextBox1.Text = .Column(1)
    TextBox2.Text = .Column(2)
    TextBox3.Text = .Column(3)
End With
End Sub
этих действий достаточно чтобы можно было :
подготовить место для новой записи (Add)
сохранить изменения в выбранной существующей записи (SAVE)
удалить существующую, удалив (стереть) её имя (SAVE)

Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 27.06.2010, 03:00   #4
web_lover
 
Регистрация: 24.06.2010
Сообщений: 6
По умолчанию

Здравствуйте Евгений, да код здорово работает, но позвольте мне уточнить кое-что:
Вы старались сжать все в одной кнопке, это здорово, но код для мне ещё сложен .

хотелось бы остановиться пока на простые коды как код для combobox1

Код:
Private Sub UserForm_Activate()
    ComboBox1.List = Range("Table1").Value
End Sub
Private Sub ComboBox1_Click()
    TextBox1.Text = ComboBox1.Column(1)
    TextBox2.Text = ComboBox1.Column(2)
    TextBox3.Text = ComboBox1.Column(3)
End Sub
Хочу знать просто какой код добавляет строку в Table1 сверху и вставляет данные из textbox4,1,2,3 в ячейки новой строки. это будет кнопка (Add).
у меня такой код нашелся
Код:
Private Sub Button1_Click()
Sheets(1).Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
    Cells(2, 1) = TextBox4.Text
    Cells(2, 2) = TextBox1.Text
    Cells(2, 3) = TextBox2.Text
    Cells(2, 4) = TextBox3.Text
End Sub
Но здесь надо указать имя листа и строку относительно листу а не относительно таблице.

Второе (Delete) как можно удалить строку из Table1 первую строку относительно таблицы, конечно первую после заголовок (в пример удаления последнего ввода). и другая кнопка так же для удаления строки совпадавшую с item в ComboBox1.

А на счет Edit или Save можно как-то упростить ваш код.

P.S. Евгений потерпите меня с моими вопросами. Ваш код работает но я хочу постепенно понимать каждый код начиняя с простых.
web_lover вне форума Ответить с цитированием
Старый 27.06.2010, 09:22   #5
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

web_lover, учиться и пытаться осмысливать это похвально, "..понимать каждый код начиняя с простых..." - конечно понимать надо, но не стоит углубляться и развивать тему "простого кодирования", умея ездить на мотоцикле езде на велосипеде не придется долго учиться, пересаживаться с велосипеда на мотоцикл сложнее.
Евгений

Последний раз редактировалось Teslenko_EA; 27.06.2010 в 10:07.
Teslenko_EA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Корректировка данных Excel panuta Microsoft Office Excel 6 17.05.2010 16:10
Кол-во данных в таблице dani92 БД в Delphi 1 02.04.2009 07:58
Корректировка данных в переменных celovec Общие вопросы Delphi 10 28.01.2008 02:29
Проблема с модулями и дин.структурами данных velgelmina Помощь студентам 1 16.05.2007 06:43
Сохранение данных в таблице Таня84 БД в Delphi 7 04.03.2007 02:44