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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2014, 18:23   #1
aleksandr_mo19
Пользователь
 
Регистрация: 04.10.2014
Сообщений: 14
По умолчанию Visual Basic связь combbobox, textbox, excel

Всем доброго вечера!
Начинаю разбираться с visual basic и не все пока получается...
Вопрос следующий
Из файла excel (из листа 1 первого столбца) в combo box передаются определенные значения.....это получилось реализовать...а дальше при выборе значения в combobox в textbox из того же файла excel должно передаваться значение, соответствующие выбранному, но из 2 столбца.
Вот это реализовать не получается...

Код:
Private Sub Form_Load()
Dim XL As Excel.Application
Set XL = CreateObject("Excel.Application")
XL.Visible = False
XL.Workbooks.Open "C:\kugi\files\kugi.xlsx"
For I = 1 To 18
Combo1.AddItem XL.Sheets(2).Cells(I, 1).Value
Next
For j = 2 To 5
Combo2.AddItem XL.Sheets(1).Cells(j, 1).Value
Next
  XL.Quit
End Sub

Private Sub Combo2_Click()
Dim XL As Excel.Application
Set XL = CreateObject("Excel.Application")
XL.Visible = False
XL.Workbooks.Open "C:\kugi\files\kugi.xlsx"
For j = 2 To 5
If Combo2.Text = "XL.Sheets(1).Cells(j, 1).Value" Then
Text9.Value = "XL.Sheets(1).Cells(2, 2).Value"
End If
Next
  XL.Quit
End Sub

Последний раз редактировалось Stilet; 04.10.2014 в 19:20.
aleksandr_mo19 вне форума Ответить с цитированием
Старый 04.10.2014, 18:45   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Vb6 нет под рукой,но в VBA так работает.
Вложения
Тип файла: rar Combo.rar (12.8 Кб, 13 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 04.10.2014, 19:24   #3
aleksandr_mo19
Пользователь
 
Регистрация: 04.10.2014
Сообщений: 14
По умолчанию

как задать это условие d = Range("A1:B3") в моем случае, учитывая, что я обращаюсь к файлу экселя?
aleksandr_mo19 вне форума Ответить с цитированием
Старый 04.10.2014, 19:29   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

d=XL.Sheets(1).Range("A1:B3").Value
Но я не это хотел продемонстрировать,а принцип заполнения комбобокса и вывод из него информации
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 04.10.2014, 19:47   #5
aleksandr_mo19
Пользователь
 
Регистрация: 04.10.2014
Сообщений: 14
По умолчанию

Чего-то не получается
aleksandr_mo19 вне форума Ответить с цитированием
Старый 04.10.2014, 20:19   #6
aleksandr_mo19
Пользователь
 
Регистрация: 04.10.2014
Сообщений: 14
По умолчанию

ComboBox1.List(ComboBox1.ListCount - 1, 1) = d(n, 2)
эта строка присваивает каждому значению в комбобоксе значения из второго столбца экселя?

ее тоже не получается реализовать
aleksandr_mo19 вне форума Ответить с цитированием
Старый 04.10.2014, 20:52   #7
aleksandr_mo19
Пользователь
 
Регистрация: 04.10.2014
Сообщений: 14
По умолчанию

Не работает и ругается на
Код:
Combo2.List(Combo2.ListCount - 1, 3) = d(J, 2)
Код:
Private Sub Form_Load()

Dim XL As Excel.Application
Set XL = CreateObject("Excel.Application")
XL.Visible = False
XL.Workbooks.Open "C:\kugi\files\kugi.xlsx"
For I = 1 To 18
Combo1.AddItem XL.Sheets(2).Cells(I, 1).Value
Next
d = XL.Sheets(1).Range("A2", "B5").Value
For J = 2 To 5
Combo2.AddItem d(J, 1)
Combo2.List(Combo2.ListCount - 1, 3) = d(J, 2)
Next
  XL.Quit
End Sub
aleksandr_mo19 вне форума Ответить с цитированием
Старый 04.10.2014, 20:57   #8
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Как костыль.
Код:
Dim List()

Private Sub Form_Load()
Dim XL As Excel.Application
Set XL = CreateObject("Excel.Application")
XL.Visible = False
XL.Workbooks.Open "C:\kugi\files\kugi.xlsx"
Redim List(17)
For I = 1 To 18
Combo1.AddItem XL.Sheets(2).Cells(I, 1).Value
List(i-1)=XL.Sheets(2).Cells(I, 2).Value
Next

  XL.Quit
End Sub

Private Sub ComboBox1_Change()
if ComboBox1.listindex)=-1 then exit sub
Textbox1.text=List(ComboBox1.listindex)
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 04.10.2014, 21:24   #9
aleksandr_mo19
Пользователь
 
Регистрация: 04.10.2014
Сообщений: 14
По умолчанию

А вы не могли бы разъяснить, что делает эта строка:
Код HTML:
Private Sub Combo2_Change()
Text9.Text = List(Combo2.ListIndex)
End Sub
И вот при таком коде не происходит не чего:

Код HTML:
Private Sub Combo2_Change()
Text9.Text = List(Combo2.ListIndex)
End Sub
а если вот так:

Код HTML:
Private Sub Combo2_Click()
Text9.Text = List(Combo2.ListIndex)
End Sub
то работает. В чем здесь дело может быть?

Код HTML:
ReDim List(4)
это мы переопределяем размерность и говорим, что будет 4 значения, правильно?


Знаю вопросы глупые, но я только начинаю разбираться.
Спасибо за помощь!
aleksandr_mo19 вне форума Ответить с цитированием
Старый 04.10.2014, 21:47   #10
aleksandr_mo19
Пользователь
 
Регистрация: 04.10.2014
Сообщений: 14
По умолчанию

Большое спасибо...разобрался, и теперь получилось у одному комбубоксу сразу 5 текстбоксов через индексы привязать!!!
aleksandr_mo19 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
макрос Excel Visual Basic arly123 Помощь студентам 0 20.04.2013 01:43
Visual Basic Microsoft Excel Людмила. Помощь студентам 3 23.11.2012 19:51
Visual Basic интегрированный в Excel a1b2 Microsoft Office Excel 3 23.12.2010 19:53
Как найти определённый текст в TextBox'е(Visual Basic.NET) reyn90 Помощь студентам 0 21.06.2009 02:48