Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: ComboBox и Label Добавлено: 15.12.08 23:00  

Автор вопроса:  Irina
Прочитала много, но так ничего и не получилось. Подскажите, пожалуйста. На форме я создала ComboBox1 и Label1. На листе1 имеется 2 столбца: 1- наименование, 2- количество. В ComboBox1 у меня выбирается наименование, а в как сделать чтобы в Label1 у меня автоматически проставлялось количество в соответствии с наименованием?

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 Nytrogen



Вопросов: 18
Ответов: 186
 Профиль | | #1 Добавлено: 15.12.08 23:41
При событии Change обращайтесь к ячейке с номером строки ListIndex или как-то так. Идея такова: просто смотрите, элемент с каким номером выбран, и обращаетесь к соответствуюшей ячейке.

Ответить

Номер ответа: 2
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #2 Добавлено: 16.12.08 09:08
А еще можно сделать вот так.

У ComboBox1 на форме в свойстве ColumnCount указать количество столбцов (В данном случае 2). В свойстве RowSource указать диапазон значений. Например: А2:А5. В свойстве ColumnWidths указать ширину столбцов, через ; -> 30 pt;30 pt
В событии Change у ComboBox1 написать
  1. Label1.Caption = ComboBox1.Column(1)

Работает. :-)

Ответить

Номер ответа: 3
Автор ответа:
 Irina



Вопросов: 1
Ответов: 2
 Профиль | | #3 Добавлено: 16.12.08 22:14
Я попробовала как вы мне написали, но он ругается.
Если я ввожу RowSource, то он пишет ошибка Load UserForm1
А если без RowSource, то ошибка в строке:
Label1.Caption = ComboBox1.Column(1), где
ComboBox1.Column=Null

Ответить

Номер ответа: 4
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #4 Добавлено: 17.12.08 11:35
Столбцы с данными рядом находятся ? Например: данные по названиям находятся в ячейках А2:А5. Данные по количеству находятся в ячейках B2:B5. В RowSource пишем: A2:B5. Ширина по 30. Количество столбцов: 2.

Если данных много по столбцам, можно указать в RowSource весь диапазон, количество столбцов на весь диапазон, а ширину столбцов поставить 0. Например, 4 столбца данных, видны только 1 и 4: 30 pt;0 pt;0 pt;30 pt

Ответить

Номер ответа: 5
Автор ответа:
 Nytrogen



Вопросов: 18
Ответов: 186
 Профиль | | #5 Добавлено: 17.12.08 12:24
Народ, да что же вы делаете? Какая вторая колонка? Всё проще простого:
  1. Option Explicit
  2.  
  3. Dim theRange As Range
  4.  
  5. Private Sub UserForm_Initialize()
  6.   'определяем диапазон из двух колонок с наименованием и количеством
  7.   Set theRange = ThisWorkbook.Worksheets("Sheet1").Range("A1:B5")
  8.   'RowSource можно задать и в свойствах формы
  9.   ComboBox1.RowSource = theRange.Columns(1).Address(False, False)
  10. End Sub
  11.  
  12. Private Sub ComboBox1_Change()
  13.   'обновляем надпись
  14.   On Error Resume Next
  15.     Label1.Caption = theRange(ComboBox1.ListIndex + 1, 2).Value
  16.     'что будем выводить, если введено значение не из списка?
  17.     If Err <> 0 Then
  18.       Label1.Caption = "Not Found"
  19.     End If
  20.   On Error GoTo 0
  21. End Sub

Ответить

Номер ответа: 6
Автор ответа:
 Irina



Вопросов: 1
Ответов: 2
 Профиль | | #6 Добавлено: 17.12.08 19:44
Это у меня получилось. Спасибо. Только теперь у меня проблема в том, что активный лист у меня -Лист2, а данные для ComboBox1 находятся на Лист1. Если я нахожусь на Лист2 тогда в ComboBox1 отражаются данные с Лист2, а не Лист1. А вот в Label1 правильно отражаются данные с Лист1(если считать по порядку выбора). Вот мой код:
Dim rng3 As Range
Private Sub ComboBox12_Change()
     Label1.Caption = rng3(ComboBox1.ListIndex + 1, 2).Value
   End Sub
Private Sub UserForm_Initialize()
   Set rng3 = ThisWorkbook.Worksheets("Лист1";).Range("B2:C7";)
    ComboBox1.RowSource = rng3.Columns(1).Address(False, False)
End Sub

Ответить

Номер ответа: 7
Автор ответа:
 Nytrogen



Вопросов: 18
Ответов: 186
 Профиль | | #7 Добавлено: 17.12.08 20:07
Упс, это я ступил (a)
  1. ComboBox1.RowSource = theRange.Worksheet.Name & "!" & theRange.Columns(1).Address

Ответить

Номер ответа: 8
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #8 Добавлено: 18.12.08 08:46
Ну так у меня тоже самое делает. Только привязано все к ComboBox1. И значение в Label1 чиатется оттуда же. :-)

Ответить

Номер ответа: 9
Автор ответа:
 Nytrogen



Вопросов: 18
Ответов: 186
 Профиль | | #9 Добавлено: 18.12.08 21:55
Jasmin, это Ваш вариант. Я же считаю это неоправданным с точки зрения программирования =)

Ответить

Номер ответа: 10
Автор ответа:
 Programmer



Вопросов: 0
Ответов: 1
 Профиль | | #10 Добавлено: 08.01.09 14:50
Вопрос!
Как вывести количество файлов через Label, и эти же файлы вывести в StaticText&

Ответить

Номер ответа: 11
Автор ответа:
 Nytrogen



Вопросов: 18
Ответов: 186
 Профиль | | #11 Добавлено: 08.01.09 21:54
Programmer, во-первых, новую тему создай, а во-вторых, конкретнее =)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам