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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2012, 13:25   #1
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию Отражение в Textbox значения по условию в Combobox

Добрый день, уважаемые форумчане!
Ваяю дальше юзерформу для заполнения\редактирования таблицы. По выбору номера палаты в Combobox необходимо, чтобы в текстбоксах появлялись значения из таблицы. В примере сделал для Textbox4, вроде присвоил правильно, должна отображаться фамилия первого пациента первой палаты, но "Иванов" не отображается. Что там я наваял в коде не так? Таблица по строкам постоянная, может расширяться только по столбцам.
Далее, раз пациентов в палате несколько, то вывод значений в текстбоксы оформить пакетами (Case 1, 2, 3)?
И еще, в связи с тем, что пациентов может быть либо 2, либо 3, то для палат где 2 пациента ввести запрет на ввод в текстбоксы для 3-го пациента значений, ну и естественно редактирования. Где-то я это видел.
Заранее спасибо!
Вложения
Тип файла: rar пациенты.rar (15.2 Кб, 62 просмотров)
strannick вне форума Ответить с цитированием
Старый 11.08.2012, 16:00   #2
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Вроде сам разобрался. В коде ComboBox1_Change вместо

If sh.Cells(i, 3) = UserForm1.ComboBox1 And sh.Cells(i, 5) = 1 Then

надо

If sh.Cells(i, 3) <> UserForm1.ComboBox1 And sh.Cells(i, 5) <> 1 Then

Недосмотрел. Вот теперь оформить по всем текстбоксам. Думаю, сам сделаю. А вот по поводу запрета вывода значения если нету третьего пациента - вопрос в силе. Если кто чего подскажет буду благодарен.

Последний раз редактировалось strannick; 11.08.2012 в 16:05.
strannick вне форума Ответить с цитированием
Старый 11.08.2012, 16:14   #3
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

strannick, это не о Вас сообщение:
http://www.excel-vba.ru/forum/index.php?topic=1328.0
?
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 11.08.2012, 16:59   #4
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Такой вопрос уже задавали. Отвечал. Копию ответа отправил в личку.
strannick вне форума Ответить с цитированием
Старый 11.08.2012, 17:45   #5
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Рано я обрадовался. При вот таком коде в текстбоксы для фамилий выводит начиная со второй, а не с первой.

Private Sub ComboBox1_Change()
Dim sh As Worksheet
Set sh = Sheets("Лист1")
For i = 2 To 21
If sh.Cells(i, 2).Value <> UserForm2.ComboBox1.Value Then
If sh.Cells(i, 3).Value <> 1 Then
UserForm2.TextBox4.Text = sh.Cells(i, 4)
UserForm2.TextBox16.Text = sh.Cells(i + 1, 4)
UserForm2.TextBox29.Text = sh.Cells(i + 2, 4)
Exit For

End If
End If
Next i

End Sub

То есть в текстбокс для отображении фамилии первого пациента выводит фамилию второго. Для второго - фамилию третьего. Чего все-таки не так?
strannick вне форума Ответить с цитированием
Старый 14.08.2012, 10:41   #6
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Все, разобрался. Вот код если кому надо:

Private Sub ComboBox1_Change()
Dim sh As Worksheet
Set sh = Sheets("Лист1")
For i = 2 To 21

'полностью рабочий блок
If ComboBox1.Text = sh.Cells(i, 2).Value And sh.Cells(i + 2, 3).Value = 3 Then


TextBox4 = sh.Cells(i, 4).Value
TextBox16 = sh.Cells(i + 1, 4).Value
TextBox29 = sh.Cells(i + 2, 4).Value
Exit For

ElseIf ComboBox1.Text = sh.Cells(i, 2).Value And sh.Cells(i + 2, 3).Value <> 3 Then
TextBox4 = sh.Cells(i, 4).Value
TextBox16 = sh.Cells(i + 1, 4).Value
TextBox29 = ""
Exit For

End If

Next


End Sub

Private Sub CommandButton1_Click() 'Добавить строки
Application.ScreenUpdating = False
Dim iLastRow As Long
Dim sh As Worksheet
Set sh = Sheets("Лист1")
If TextBox4 = "" Then MsgBox "Не введена фамилия", vbCritical, "Ошибка": Exit Sub

For i = 2 To 21
If ComboBox1.Text = sh.Cells(i, 2).Value And sh.Cells(i, 3).Value = 1 Then

sh.Cells(i, 4) = TextBox4
Exit For
End If

Application.ScreenUpdating = True

Next
MsgBox ("Информация добавлена")
'Hide
End Sub

Private Sub CommandButton4_Click() 'Очистить информацию
Application.ScreenUpdating = False
Dim sh As Worksheet
Set sh = Sheets("Лист1")
For i = 2 To 21
If ComboBox1.Text = sh.Cells(i, 2).Value And sh.Cells(i, 3).Value = 1 Then
sh.Cells(i, 4).Clear
TextBox4 = ""
Exit For
End If
Application.ScreenUpdating = True
Next
MsgBox ("Информация удалена")
'Hide
End Sub

Отображение информации из таблицы, вставка информации в таблицу, очистка информации в таблице. Сделано для одного варианта. Если для всех, то надо добавлять. Думаю, разберетесь. Остался вопрос по блокировке ввода информации по третьему пациенту, если в палате только 2. Надо поискать вариант блокировки кнопки "Добавить..."
strannick вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
combobox и textbox tokdmi Microsoft Office Excel 1 16.11.2011 21:38
combobox & textbox Mcduff Помощь студентам 0 31.10.2011 14:10
Combobox и textbox как сделать? Lorgan Microsoft Office Excel 9 25.05.2011 03:39
VBA,Excel, Создание аналогичных Textbox, Combobox diikand Помощь студентам 0 05.04.2010 21:37
Проблема с Combobox и TextBox ARud Microsoft Office Excel 4 08.02.2010 17:54