Доброе утро уважаемые форумчане!!! В виду того что мои задумки ПРОВАЛИВАЮТСЯ из-за финансирования со стороны руководства ((((( а также личных сбережений нет для того чтоб осуществить задуманное ((((( Поднимал темы: My WebPage помогали люди My WebPage всем спасибо огромное за это!!! Сегодня ночью нашел темы которые как раз таки касающиеся моей задумки My WebPage My WebPage Скачав данные файлы сидел разбирался как это все работает (((( что то получилось (это вызов формы при нажатии кнопки добавить запись на листе Журнал прихода) Далее столкнулся с трудностью ((( На UserForm1 при использования кода из тем для ComboBox2 (чтоб получился выпадающий список) выдает ошибки и ругается ((((( [vba]
Код
Private Sub ComboBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox2.Value With Sheets("Поставщик") LastRow2 = .Cells(Rows.Count, 3).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("Поставщик"), Fam) = 0 Then .Cells(LastRow2 + 1, 3) = Fam End If End If End With Call UserForm_Activate End Sub
[/vba] Не могли бы вы его поправить (((( что я сделал не так ((((. По аналогии я потом проделаю данную процедуру для других ComboBox. СПАСИБО ОГРОМНОЕ ЗА ПОНИМАНИЕ И ПОМОЩЬ!!!
Доброе утро уважаемые форумчане!!! В виду того что мои задумки ПРОВАЛИВАЮТСЯ из-за финансирования со стороны руководства ((((( а также личных сбережений нет для того чтоб осуществить задуманное ((((( Поднимал темы: My WebPage помогали люди My WebPage всем спасибо огромное за это!!! Сегодня ночью нашел темы которые как раз таки касающиеся моей задумки My WebPage My WebPage Скачав данные файлы сидел разбирался как это все работает (((( что то получилось (это вызов формы при нажатии кнопки добавить запись на листе Журнал прихода) Далее столкнулся с трудностью ((( На UserForm1 при использования кода из тем для ComboBox2 (чтоб получился выпадающий список) выдает ошибки и ругается ((((( [vba]
Код
Private Sub ComboBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox2.Value With Sheets("Поставщик") LastRow2 = .Cells(Rows.Count, 3).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("Поставщик"), Fam) = 0 Then .Cells(LastRow2 + 1, 3) = Fam End If End If End With Call UserForm_Activate End Sub
[/vba] Не могли бы вы его поправить (((( что я сделал не так ((((. По аналогии я потом проделаю данную процедуру для других ComboBox. СПАСИБО ОГРОМНОЕ ЗА ПОНИМАНИЕ И ПОМОЩЬ!!!lebensvoll
И еще 1. LastRow2 нужно искать не по третьему столбцу листа Поставщик, а по второму 2. В файле отсутствует имя "Сотрудники", по которому собираемся считать CountIf
И еще 1. LastRow2 нужно искать не по третьему столбцу листа Поставщик, а по второму 2. В файле отсутствует имя "Сотрудники", по которому собираемся считать CountIf_Boroda_
Roman777, Да вы правы!!! При проверке данного кода (((( именно за нее мне и говорит что это не в тему????
Цитата
что за процедуру Вы хотите вызвать на выходе из КомбоБокса?
Если бы я понимал коды (((( я бы сказал что намереваюсь вызвать данным кодом (((( а так я данный код слямзил с тем указанных выше. Где после исследования данных кодов я понял что для того чтоб появился выплывающий список в данном КомбоБоксе2... nilem, я вас понял понял спасибо!!! _Boroda_, прошу прощения я наверное был не внимателен когда не исправил
Цитата
В файле отсутствует имя "Сотрудники"
на "Поставщик" (((( изменю обязательно!!! А также спасибо что подсказали что оказывается он еще и столбцы прописывает (((((
Цитата
1. LastRow2 нужно искать не по третьему столбцу листа Поставщик, а по второму
[vba]
Код
LastRow2 = .Cells(Rows.Count, 3).End(xlUp).Row
[/vba] сейчас попробую!!! СПАСИБО ВАМ ОГРОМНЕЙШЕЕ ВСЕМ!!! [p.s.] ЕСЛИ ДОЛГО МУЧАТСЯ ЧТО НИБУДЬ ПОЛУЧИТСЯ )))) благодаря данному сайту глядишь я смогу понять и коды (пусть и примитивно)!!! САЙТ ПРОСТО КЛАДЕЗЬ с такими ОТЗЫВЧИВЫМИ, ГРАМОТНЫМИ, форумчанами!!!
Roman777, Да вы правы!!! При проверке данного кода (((( именно за нее мне и говорит что это не в тему????
Цитата
что за процедуру Вы хотите вызвать на выходе из КомбоБокса?
Если бы я понимал коды (((( я бы сказал что намереваюсь вызвать данным кодом (((( а так я данный код слямзил с тем указанных выше. Где после исследования данных кодов я понял что для того чтоб появился выплывающий список в данном КомбоБоксе2... nilem, я вас понял понял спасибо!!! _Boroda_, прошу прощения я наверное был не внимателен когда не исправил
Цитата
В файле отсутствует имя "Сотрудники"
на "Поставщик" (((( изменю обязательно!!! А также спасибо что подсказали что оказывается он еще и столбцы прописывает (((((
Цитата
1. LastRow2 нужно искать не по третьему столбцу листа Поставщик, а по второму
[vba]
Код
LastRow2 = .Cells(Rows.Count, 3).End(xlUp).Row
[/vba] сейчас попробую!!! СПАСИБО ВАМ ОГРОМНЕЙШЕЕ ВСЕМ!!! [p.s.] ЕСЛИ ДОЛГО МУЧАТСЯ ЧТО НИБУДЬ ПОЛУЧИТСЯ )))) благодаря данному сайту глядишь я смогу понять и коды (пусть и примитивно)!!! САЙТ ПРОСТО КЛАДЕЗЬ с такими ОТЗЫВЧИВЫМИ, ГРАМОТНЫМИ, форумчанами!!!lebensvoll
Учел все ваши наставления в моей проблеме, а то есть: [vba]
Код
Private Sub ComboBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox2.Value With Sheets("Поставщик") LastRow2 = .Cells(Rows.Count, 2).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("Поставщик"), Fam) = 0 Then .Cells(LastRow2 + 1, 2) = Fam End If End If End With
End Sub
[/vba] Roman777, nilem, удалил данную строку
Цитата
что за процедуру Вы хотите вызвать на выходе из КомбоБокса?
;
Цитата
В модуле формы UserForm1 нет процедуры UserForm_Activate, поэтому Call UserForm_Activate производит ошибку Просто уберите эту строку
как я правильно понял я должно быть должен удалить также
Цитата
End With
!? Хотя при проверке через Debung + Compile VBAProject ошибок не выявлено ((((( _Boroda_, Я также учел и ваши правки (((( НО у меня так и не появляется выпадающего списка (((( на UserForm1 при его использовании. Самое что интересное я могу за то примерно написать любого нового поставщика )))) и он добавляется в список на листе "Поставщик". )))))) А почему же нет выпадающего списка то на UserForm1???
Учел все ваши наставления в моей проблеме, а то есть: [vba]
Код
Private Sub ComboBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox2.Value With Sheets("Поставщик") LastRow2 = .Cells(Rows.Count, 2).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("Поставщик"), Fam) = 0 Then .Cells(LastRow2 + 1, 2) = Fam End If End If End With
End Sub
[/vba] Roman777, nilem, удалил данную строку
Цитата
что за процедуру Вы хотите вызвать на выходе из КомбоБокса?
;
Цитата
В модуле формы UserForm1 нет процедуры UserForm_Activate, поэтому Call UserForm_Activate производит ошибку Просто уберите эту строку
как я правильно понял я должно быть должен удалить также
Цитата
End With
!? Хотя при проверке через Debung + Compile VBAProject ошибок не выявлено ((((( _Boroda_, Я также учел и ваши правки (((( НО у меня так и не появляется выпадающего списка (((( на UserForm1 при его использовании. Самое что интересное я могу за то примерно написать любого нового поставщика )))) и он добавляется в список на листе "Поставщик". )))))) А почему же нет выпадающего списка то на UserForm1???lebensvoll
nilem, доброе утро!!! Да ваш код действительно выдает на UserForm1 теперь выпадающий список... Спасибо огромное. Но не могли бы вы хоть в двух словах объяснить почему же тот код который я слямзил с файла (который у него работает) а при учтенных всех правках для меня не сработал ((((( Также прошу Вас подсобить можно ли к Вашему коду как то применить данный код или его подправить!? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lReply As Long If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("X3:X10000")) Is Nothing Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Sheets("Грузоперевозчик").Range("Грузоперевозчик"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then Worksheets("Грузоперевозчик").Range("Грузоперевозчик").Cells(Worksheets("Грузоперевозчик").Range("Грузоперевозчик").Rows.Count + 1, 1) = Target Sheets("Грузоперевозчик").Range("B1:B1000").Sort Key1:=Sheets("Грузоперевозчик").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End If End If End If
If Not Intersect(Target, Range("B3:B10000")) Is Nothing Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Sheets("Поставщик").Range("Поставщик"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then Worksheets("Поставщик").Range("Поставщик").Cells(Worksheets("Поставщик").Range("Поставщик").Rows.Count + 1, 1) = Target Sheets("Поставщик").Range("B1:B1000").Sort Key1:=Sheets("Поставщик").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End If End If End If
End Sub
[/vba] В данном коде (кросс:My WebPage прекрасная Manyasha, помогла мне сделать так чтоб если вдруг данного контрагента не будет в базе. То его можно будет вбить так и он дополняется и в базе (тем самым и в выпадающем списке) а также производится сортировка. Данный код и эту тему я смог ознакомиться и применить к своему файлу тут My WebPage в ней потом [img][/img] применил еще и сортировку в выпадающем списке. nilem и кстати (((( я столкнулся с той же самой проблемой как и в теме My WebPage КОД НАЧИНАЕТ РУГАТЬСЯ (((( когда я ВАШ код применяю к следующему выпадающему списку (((( а т.е. к ГРУЗОПОЛУЧАТЕЛЮ. Не должно быть ведь кодов с одинаковыми наименованиями (((((
nilem, доброе утро!!! Да ваш код действительно выдает на UserForm1 теперь выпадающий список... Спасибо огромное. Но не могли бы вы хоть в двух словах объяснить почему же тот код который я слямзил с файла (который у него работает) а при учтенных всех правках для меня не сработал ((((( Также прошу Вас подсобить можно ли к Вашему коду как то применить данный код или его подправить!? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lReply As Long If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("X3:X10000")) Is Nothing Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Sheets("Грузоперевозчик").Range("Грузоперевозчик"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then Worksheets("Грузоперевозчик").Range("Грузоперевозчик").Cells(Worksheets("Грузоперевозчик").Range("Грузоперевозчик").Rows.Count + 1, 1) = Target Sheets("Грузоперевозчик").Range("B1:B1000").Sort Key1:=Sheets("Грузоперевозчик").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End If End If End If
If Not Intersect(Target, Range("B3:B10000")) Is Nothing Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Sheets("Поставщик").Range("Поставщик"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then Worksheets("Поставщик").Range("Поставщик").Cells(Worksheets("Поставщик").Range("Поставщик").Rows.Count + 1, 1) = Target Sheets("Поставщик").Range("B1:B1000").Sort Key1:=Sheets("Поставщик").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End If End If End If
End Sub
[/vba] В данном коде (кросс:My WebPage прекрасная Manyasha, помогла мне сделать так чтоб если вдруг данного контрагента не будет в базе. То его можно будет вбить так и он дополняется и в базе (тем самым и в выпадающем списке) а также производится сортировка. Данный код и эту тему я смог ознакомиться и применить к своему файлу тут My WebPage в ней потом [img][/img] применил еще и сортировку в выпадающем списке. nilem и кстати (((( я столкнулся с той же самой проблемой как и в теме My WebPage КОД НАЧИНАЕТ РУГАТЬСЯ (((( когда я ВАШ код применяю к следующему выпадающему списку (((( а т.е. к ГРУЗОПОЛУЧАТЕЛЮ. Не должно быть ведь кодов с одинаковыми наименованиями (((((lebensvoll
Кто бы ты ни был, мир в твоих руках
Сообщение отредактировал lebensvoll - Четверг, 21.07.2016, 09:16
Уважаемые форумчане подскажите пожалуйста как для UserForm1 каждому ComboBox прописать подобный код в виде выпадающего списка!? nilem, очень помог своим кодом и действительно на UserForm1 для "Поставщика" теперь предоставляется выпадающий список. Но когда я начинаю его применять для "Грузоперевозчик" код на меня ругается ((((( что такой уже есть (как я правильно понял). смотрите [img][/img] Как применить мне каждому ComboBox на UserForm1 код с выпадающим списком чтоб можно было еще его и дополнить если вдруг в базе не будет данного "поставщика" и сортировался список автоматом???
Уважаемые форумчане подскажите пожалуйста как для UserForm1 каждому ComboBox прописать подобный код в виде выпадающего списка!? nilem, очень помог своим кодом и действительно на UserForm1 для "Поставщика" теперь предоставляется выпадающий список. Но когда я начинаю его применять для "Грузоперевозчик" код на меня ругается ((((( что такой уже есть (как я правильно понял). смотрите [img][/img] Как применить мне каждому ComboBox на UserForm1 код с выпадающим списком чтоб можно было еще его и дополнить если вдруг в базе не будет данного "поставщика" и сортировался список автоматом???lebensvoll
Нельзя 2 макроса с одинаковым названием. Пару дней назад Вам уже об этом говорили. И комбобоксы не оба №2 Вот так примерно можно [vba]
Код
Private Sub UserForm_Initialize() With Sheets("Поставщик") ComboBox2.List = .Range("B2", .Cells(Rows.Count, 2).End(xlUp)).Value End With With Sheets("Грузоперевозчик") ComboBox3.List = .Range("B2", .Cells(Rows.Count, 2).End(xlUp)).Value End With End Sub
[/vba]
Нельзя 2 макроса с одинаковым названием. Пару дней назад Вам уже об этом говорили. И комбобоксы не оба №2 Вот так примерно можно [vba]
Код
Private Sub UserForm_Initialize() With Sheets("Поставщик") ComboBox2.List = .Range("B2", .Cells(Rows.Count, 2).End(xlUp)).Value End With With Sheets("Грузоперевозчик") ComboBox3.List = .Range("B2", .Cells(Rows.Count, 2).End(xlUp)).Value End With End Sub
_Boroda_, у меня получилось ))))) я сообразил ))))) Когда я только создовал данную тему то у меня была проблема (((( и Roman777, (второе сообщение)
Цитата
что за процедуру Вы хотите вызвать на выходе из КомбоБокса? на сколько я заметил UserForm1 и UserForm2 у Вас в файле, других нет.
Я нашел )))) я вкурил как и почему ))))) Я должен был активировать ее и тогда мой код срабатывает )))) [vba]
Код
Private Sub UserForm_Activate() Me.ComboBox2.RowSource = "Поставщик" End Sub
Private Sub ComboBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox2.Value With Sheets("Поставщик") LastRow2 = .Cells(Rows.Count, 2).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("Поставщик"), Fam) = 0 Then .Cells(LastRow2 + 1, 2) = Fam End If End If End With Call UserForm_Activate End Sub
[/vba] Так я теперь могу делать для каждого своего выпадающего списка лишь нужно в активации прописывать тот комбоБокс что я должен активировать.... Прошу прощения _Boroda_, но ваш код я еще не пробывал но обязательно попробую. Мне ведь нужно еще проверить могу ли я дополнять список базы если вдруг их не будет у меня
_Boroda_, у меня получилось ))))) я сообразил ))))) Когда я только создовал данную тему то у меня была проблема (((( и Roman777, (второе сообщение)
Цитата
что за процедуру Вы хотите вызвать на выходе из КомбоБокса? на сколько я заметил UserForm1 и UserForm2 у Вас в файле, других нет.
Я нашел )))) я вкурил как и почему ))))) Я должен был активировать ее и тогда мой код срабатывает )))) [vba]
Код
Private Sub UserForm_Activate() Me.ComboBox2.RowSource = "Поставщик" End Sub
Private Sub ComboBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox2.Value With Sheets("Поставщик") LastRow2 = .Cells(Rows.Count, 2).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("Поставщик"), Fam) = 0 Then .Cells(LastRow2 + 1, 2) = Fam End If End If End With Call UserForm_Activate End Sub
[/vba] Так я теперь могу делать для каждого своего выпадающего списка лишь нужно в активации прописывать тот комбоБокс что я должен активировать.... Прошу прощения _Boroda_, но ваш код я еще не пробывал но обязательно попробую. Мне ведь нужно еще проверить могу ли я дополнять список базы если вдруг их не будет у меняlebensvoll
процедурам. Она во-первых, совсем другой смысл имеет у Вас внутри кода (наименование не соответствует действию кода), ну а во-вторых, сбивает с толку, поскольку очень похожа наименованием на событийные процедуры.
lebensvoll, рекомендую Вам не давать подобных наименований
процедурам. Она во-первых, совсем другой смысл имеет у Вас внутри кода (наименование не соответствует действию кода), ну а во-вторых, сбивает с толку, поскольку очень похожа наименованием на событийные процедуры.Roman777
Много чего не знаю!!!!
Сообщение отредактировал Roman777 - Четверг, 21.07.2016, 13:58
Roman777, честно сказать вам я вас понял что делать так нельзя. Но я не давал ее (((( данный материал с кодами я позаимствовал в тех темах где указывал выше. ((((( А как тогда мне поступить??? Хотя честно сказать у меня уже с данной процедурой )))) половина UserForm_1 заполнена и все работает [vba]
Код
Private Sub UserForm_Activate() Me.ComboBox2.RowSource = "Поставщик" Me.ComboBox3.RowSource = "Грузоперевозчик" Me.ComboBox4.RowSource = "ВидМатериала" Me.ComboBox5.RowSource = "Тара" End Sub
[/vba] У меня с прописанием совсем все плохо ((((
Roman777, честно сказать вам я вас понял что делать так нельзя. Но я не давал ее (((( данный материал с кодами я позаимствовал в тех темах где указывал выше. ((((( А как тогда мне поступить??? Хотя честно сказать у меня уже с данной процедурой )))) половина UserForm_1 заполнена и все работает [vba]
Код
Private Sub UserForm_Activate() Me.ComboBox2.RowSource = "Поставщик" Me.ComboBox3.RowSource = "Грузоперевозчик" Me.ComboBox4.RowSource = "ВидМатериала" Me.ComboBox5.RowSource = "Тара" End Sub
[/vba] У меня с прописанием совсем все плохо ((((lebensvoll
Кто бы ты ни был, мир в твоих руках
Сообщение отредактировал lebensvoll - Четверг, 21.07.2016, 14:46
Роман, так это и есть событие активации формы, код принадлежит форме UserForm1 (судя по картинке из 9-го сообщения). Так что все правильно, не путайте человека
Роман, так это и есть событие активации формы, код принадлежит форме UserForm1 (судя по картинке из 9-го сообщения). Так что все правильно, не путайте человека Manyasha
УВАЖАЕМЫЕ мои УЧИТЕЛЯ!!! Я не умею писать коды воообще ((((( я лишь ищу темы и стараюсь от туда их вытянуть и применить себе )))) и если у меня не получается то я кричу о помощи на форум (((( БЕЗ ВАС МНЕ НИ КАК!!! Главное что в данном коде у меня уже получилось сформировать половину UserForm_1 и они работают )))))) И Я СЧАСТЛИВ (не думал ни когда что воспользуюсь лозунгом ДОМА 2 )))))))) но так оно и есть я безумно рад!!! СПАСИБО ВАМ ОГРОМНЕЙШЕЕ ВСЕМ ВСЕМ!!! вот сами смотрите что получается. Manyasha, вам огромнейшее я смог также на некоторые коды втиснуть еще и сортировку )))) в предыдущих темах вы мне помогали по этому поводу... [vba]
Код
Private Sub ComboBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox2.Value With Sheets("Поставщик") LastRow2 = .Cells(Rows.Count, 2).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("Поставщик"), Fam) = 0 Then .Cells(LastRow2 + 1, 2) = Fam End If End If Sheets("Поставщик").Range("B1:B1000").Sort Key1:=Sheets("Поставщик").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End With Call UserForm_Activate End Sub Private Sub ComboBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox3.Value With Sheets("Грузоперевозчик") LastRow2 = .Cells(Rows.Count, 2).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("Грузоперевозчик"), Fam) = 0 Then .Cells(LastRow2 + 1, 2) = Fam End If End If Sheets("Грузоперевозчик").Range("B1:B1000").Sort Key1:=Sheets("Грузоперевозчик").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End With Call UserForm_Activate End Sub Private Sub ComboBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox4.Value With Sheets("Вид материала") LastRow2 = .Cells(Rows.Count, 2).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("ВидМатериала"), Fam) = 0 Then .Cells(LastRow2 + 1, 2) = Fam End If End If End With Call UserForm_Activate End Sub Private Sub ComboBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox5.Value With Sheets("Тара") LastRow2 = .Cells(Rows.Count, 2).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("Тара"), Fam) = 0 Then .Cells(LastRow2 + 1, 2) = Fam End If End If End With Call UserForm_Activate End Sub Private Sub ComboBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox6.Value With Sheets("Номенклатура") LastRow2 = .Cells(Rows.Count, 2).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("Номенклатура"), Fam) = 0 Then .Cells(LastRow2 + 1, 2) = Fam End If End If Sheets("Номенклатура").Range("B1:B1000").Sort Key1:=Sheets("Номенклатура").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End With Call UserForm_Activate End Sub
Private Sub ComboBox7_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox7.Value With Sheets("Откуда материал") LastRow2 = .Cells(Rows.Count, 2).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("ВидЦемента"), Fam) = 0 Then .Cells(LastRow2 + 1, 2) = Fam End If End If Sheets("Откуда материал").Range("B1:B1000").Sort Key1:=Sheets("Откуда материал").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End With Call UserForm_Activate End Sub
Private Sub UserForm_Activate() Me.ComboBox2.RowSource = "Поставщик" Me.ComboBox3.RowSource = "Грузоперевозчик" Me.ComboBox4.RowSource = "ВидМатериала" Me.ComboBox5.RowSource = "Тара" Me.ComboBox6.RowSource = "Номенклатура" Me.ComboBox7.RowSource = "ВидЦемента" End Sub
[/vba]
УВАЖАЕМЫЕ мои УЧИТЕЛЯ!!! Я не умею писать коды воообще ((((( я лишь ищу темы и стараюсь от туда их вытянуть и применить себе )))) и если у меня не получается то я кричу о помощи на форум (((( БЕЗ ВАС МНЕ НИ КАК!!! Главное что в данном коде у меня уже получилось сформировать половину UserForm_1 и они работают )))))) И Я СЧАСТЛИВ (не думал ни когда что воспользуюсь лозунгом ДОМА 2 )))))))) но так оно и есть я безумно рад!!! СПАСИБО ВАМ ОГРОМНЕЙШЕЕ ВСЕМ ВСЕМ!!! вот сами смотрите что получается. Manyasha, вам огромнейшее я смог также на некоторые коды втиснуть еще и сортировку )))) в предыдущих темах вы мне помогали по этому поводу... [vba]
Код
Private Sub ComboBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox2.Value With Sheets("Поставщик") LastRow2 = .Cells(Rows.Count, 2).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("Поставщик"), Fam) = 0 Then .Cells(LastRow2 + 1, 2) = Fam End If End If Sheets("Поставщик").Range("B1:B1000").Sort Key1:=Sheets("Поставщик").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End With Call UserForm_Activate End Sub Private Sub ComboBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox3.Value With Sheets("Грузоперевозчик") LastRow2 = .Cells(Rows.Count, 2).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("Грузоперевозчик"), Fam) = 0 Then .Cells(LastRow2 + 1, 2) = Fam End If End If Sheets("Грузоперевозчик").Range("B1:B1000").Sort Key1:=Sheets("Грузоперевозчик").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End With Call UserForm_Activate End Sub Private Sub ComboBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox4.Value With Sheets("Вид материала") LastRow2 = .Cells(Rows.Count, 2).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("ВидМатериала"), Fam) = 0 Then .Cells(LastRow2 + 1, 2) = Fam End If End If End With Call UserForm_Activate End Sub Private Sub ComboBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox5.Value With Sheets("Тара") LastRow2 = .Cells(Rows.Count, 2).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("Тара"), Fam) = 0 Then .Cells(LastRow2 + 1, 2) = Fam End If End If End With Call UserForm_Activate End Sub Private Sub ComboBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox6.Value With Sheets("Номенклатура") LastRow2 = .Cells(Rows.Count, 2).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("Номенклатура"), Fam) = 0 Then .Cells(LastRow2 + 1, 2) = Fam End If End If Sheets("Номенклатура").Range("B1:B1000").Sort Key1:=Sheets("Номенклатура").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End With Call UserForm_Activate End Sub
Private Sub ComboBox7_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim LastRow2 As Long Dim Fam As String Fam = Me.ComboBox7.Value With Sheets("Откуда материал") LastRow2 = .Cells(Rows.Count, 2).End(xlUp).Row If Fam <> "" Then If Application.WorksheetFunction.CountIf(Range("ВидЦемента"), Fam) = 0 Then .Cells(LastRow2 + 1, 2) = Fam End If End If Sheets("Откуда материал").Range("B1:B1000").Sort Key1:=Sheets("Откуда материал").Range("B2"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal 'этот код и поможет отсортировать в алфавитном порядке End With Call UserForm_Activate End Sub
Private Sub UserForm_Activate() Me.ComboBox2.RowSource = "Поставщик" Me.ComboBox3.RowSource = "Грузоперевозчик" Me.ComboBox4.RowSource = "ВидМатериала" Me.ComboBox5.RowSource = "Тара" Me.ComboBox6.RowSource = "Номенклатура" Me.ComboBox7.RowSource = "ВидЦемента" End Sub
Матраскин, что-то я не поняла, это одобрение моего поста или критика?)) Если критика, то тогда не врубаюсь, какое из правил написания кода нарушается при использовании UserForm_Activate для формы
lebensvoll, вместо [vba]
Код
Call UserForm_Activate
[/vba] для каждого комбобокса, можно просто обновить список текущего комбобокса: [vba]
Я перезаполнила список для поставщиков)) Дальше 28-й строки элементы не попадают в список. Смотрите имя по ctrl+f3, не нужно ли $B$2:$B$28 заменить на побольше?
Матраскин, что-то я не поняла, это одобрение моего поста или критика?)) Если критика, то тогда не врубаюсь, какое из правил написания кода нарушается при использовании UserForm_Activate для формы
lebensvoll, вместо [vba]
Код
Call UserForm_Activate
[/vba] для каждого комбобокса, можно просто обновить список текущего комбобокса: [vba]
Я перезаполнила список для поставщиков)) Дальше 28-й строки элементы не попадают в список. Смотрите имя по ctrl+f3, не нужно ли $B$2:$B$28 заменить на побольше?Manyasha
Manyasha, я говорю о том, что не следует использовать userForm1, combobox2 и т. п. Roman777 из-за этого попал в непонятное. А так - Вы конечно правы
Manyasha, я говорю о том, что не следует использовать userForm1, combobox2 и т. п. Roman777 из-за этого попал в непонятное. А так - Вы конечно правыМатраскин