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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2009, 12:30   #1
sttafi
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 18
По умолчанию ComboBox как сделать чтобы список в нем формировался с другой страницы?

у меня есть 2 листа: штатное расписание( на нем отражены должности) и физические лица. На листе физические лица находится форма на ней ComboBox1. Нужно сделать так,чтобы он формировался из столбца А листа штатное расписание.
я пробовала так:
Private Sub ComboBox1_Change()
i = 2

Do While Sheets("Штатное расписание").Cells(i, 1) = ComboBox1.Value
i = i + 1
Loop
End Sub
End Sub
почему то ничего не выходит ((((((
помогите пожалуйста !!!
sttafi вне форума Ответить с цитированием
Старый 12.05.2009, 12:41   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

В модуль листа "физические лица", на котором расположен ComboBox1, вставьте код:
Код:
Private Sub Worksheet_Activate()
    With Sheets("Штатное расписание")
        For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
            ComboBox1.AddItem .Cells(i, 1)
        Next
    End With
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 12.05.2009, 12:46   #3
sttafi
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 18
По умолчанию

Вот что теперь получается:
Run-time error '424':
Object required
sttafi вне форума Ответить с цитированием
Старый 12.05.2009, 12:55   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите пример во вложении.
Вложения
Тип файла: rar Книга1.rar (8.3 Кб, 43 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 12.05.2009, 13:34   #5
sttafi
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 18
По умолчанию

спасибо большое за пример разобралась
sttafi вне форума Ответить с цитированием
Старый 12.05.2009, 14:34   #6
sttafi
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 18
По умолчанию

еще один вопросик по поводу ComboBox...
на форме UserForm1 у меня ComboBox1 и ComboBox2( которые формируется как описано выше) мне нужно поместить информацию на лист Физические лица при нажатии на кнопку CommandButton1..
делаю это следующим образом и почему-то не получается:
Private Sub CommandButton1_Click()
If ComboBox1.Text <> "" And ComboBox2.Text <> "" Then
i = 2
Do While Cells(i, 1) <> ""
i = i + 1
Loop
Cells(i, 2) = ComboBox1.Value
Cells(i, 3) = ComboBox2.Value

Else: MsgBox ("Заполните все поля!")
End If
End Sub
sttafi вне форума Ответить с цитированием
Старый 12.05.2009, 15:00   #7
nikolai_P
Форумчанин Подтвердите свой е-майл
 
Регистрация: 28.04.2008
Сообщений: 116
По умолчанию

Проблема в том, что Ты не указываешь на какой лист вставлять данные, а пишешь просто "вставить в ячейку" - "Cells(i, 2) = ComboBox1.Value" по этой причине возникает ошибка)
Код нахождения последней ячейки:
Код:
Sheets("Физические лица").Select
Sheets("Физические лица").Cells(1,1).End(xlDown)
Это равносильно тому, если Ты встанешь на ячейку А1 и нажмешь Ctrl+вниз. Перейдешь на последнюю заполненную ячейку.

Вставить данные на лист, в твоем случае можно так:
Код:
Sheets("Физические лица").Cells(i, 2) = ComboBox1.Value
Sheets("Физические лица").Cells(i, 3) = ComboBox2.Value
При этом у Тебя первый столбец не заполняется почему?
nikolai_P вне форума Ответить с цитированием
Старый 12.05.2009, 15:04   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Попробуйте так:
Код:
Private Sub CommandButton1_Click()
    If ComboBox1.Text <> "" And ComboBox2.Text <> "" Then
        i = 2
        Do While Cells(i, 2) <> ""
            i = i + 1
        Loop
        Cells(i, 2) = ComboBox1.Value
        Cells(i, 3) = ComboBox2.Value
    Else: MsgBox ("Заполните все поля!")
    End If
End Sub
Или так:
Код:
Private Sub CommandButton1_Click()
    If ComboBox1.Text = "" And ComboBox2.Text = "" Then MsgBox "Заполните все поля!", vbExclamation: Exit Sub
    Dim НоваяЯчейка As Range: Set НоваяЯчейка = Cells(65000, 2).End(xlUp).Offset(1)
    НоваяЯчейка = ComboBox1.Value
    НоваяЯчейка.Next = ComboBox2.Value
End Sub
А вообще, в таких случаях не помешало бы выкладывать свой файл...
EducatedFool вне форума Ответить с цитированием
Старый 12.05.2009, 15:12   #9
sttafi
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 18
По умолчанию

учусь совсем не на техническом факультете, а нам задают ргр такого рода и ничего не объясняют...так что приходится изучать vba самостоятельно..не очень успешно получается
sttafi вне форума Ответить с цитированием
Старый 12.05.2009, 16:49   #10
sttafi
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 18
По умолчанию

когда вставляю код для записи в таблицу ComboBox перестают работать посмотрите пожалуста ...
Вложения
Тип файла: rar моя ргр.rar (23.5 Кб, 23 просмотров)
sttafi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в Combobox убрать список? Alexi Компоненты Delphi 10 04.01.2011 08:25
открываю документ. ввожу дату и другие данные, как сделать чтобы на другой странице велась статистика по Аленка Microsoft Office Excel 5 12.02.2008 17:36
Как сделать разрыв страницы печати по условию и узнать номер страницы Leanna Microsoft Office Excel 2 21.01.2008 06:59
Как сделать, чтобы один элемент списка в ComboBox писался в несколько строк? Andr Общие вопросы Delphi 5 15.08.2007 22:24