Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Не отображается сообщение о добавлении данных в комбобокс - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не отображается сообщение о добавлении данных в комбобокс (Макросы/Sub)
Не отображается сообщение о добавлении данных в комбобокс
parovoznik Дата: Суббота, 24.04.2021, 20:25 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
Добрый вечер.
Есть форма с комбобоксом для выбора марки а/м. Если нужно добавить новые данные, то вносим текст в поле комбобокса и жмет кнопку +. Даные добавляются в свободную строку, но при этом не отображается информация в MsgBox.
Как можно устранить , эту недоработку, что бы при добавлении нового значения отображалось СООБЩЕНИЕ:MsgBox " Новая марка а/м успешно добавлена в базу данных! ", vbLf & "Строка в базе: " & LastRow
К сообщению приложен файл: ___.xlsm (32.8 Kb)
 
Ответить
СообщениеДобрый вечер.
Есть форма с комбобоксом для выбора марки а/м. Если нужно добавить новые данные, то вносим текст в поле комбобокса и жмет кнопку +. Даные добавляются в свободную строку, но при этом не отображается информация в MsgBox.
Как можно устранить , эту недоработку, что бы при добавлении нового значения отображалось СООБЩЕНИЕ:MsgBox " Новая марка а/м успешно добавлена в базу данных! ", vbLf & "Строка в базе: " & LastRow

Автор - parovoznik
Дата добавления - 24.04.2021 в 20:25
_Igor_61 Дата: Суббота, 24.04.2021, 20:55 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
Find нужно присвоить значение, типа r=Range(A:A).(Find:=cmb).row или текст или еще что-то... Не знаю, на что в примере ориентируется Is Nothing... Впрочем, это просто мои предположения... :)


Сообщение отредактировал _Igor_61 - Суббота, 24.04.2021, 20:57
 
Ответить
СообщениеFind нужно присвоить значение, типа r=Range(A:A).(Find:=cmb).row или текст или еще что-то... Не знаю, на что в примере ориентируется Is Nothing... Впрочем, это просто мои предположения... :)

Автор - _Igor_61
Дата добавления - 24.04.2021 в 20:55
Апострофф Дата: Суббота, 24.04.2021, 21:48 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 444
Репутация: 122 ±
Замечаний: 0% ±

Excel 1997
parovoznik, не включайте собственную обработку ошибок, если не собираетесь их ловить.

[vba]
Код
'Кнопка Добавить данные в комбобокс
Private Sub Btn_Add_Cmb_Click()

'On Error Resume Next 'отключаем останов при ошибке
  'проверка на заполнение полей
If Me.Cmb_МаркаАвто = "" Then: MsgBox "Отсутствуют данные", 16, "Сообщение": Exit Sub
    With Me
        МаркаАвто = Cmb_МаркаАвто
    End With
    With Worksheets("База")
        If .Columns(4).Find(МаркаАвто, , xlValues, xlWhole) Is Nothing Then
             LastRow = .Cells(Rows.Count, 4).End(xlUp).Row + 1
            .Cells(LastRow, 4) = Cmb_МаркаАвто
'            .Range(Cells(2, 4), Cells(LastRow + 1, 4)).Borders.LineStyle = xlContinuous ' обрамление ячеек
'             MsgBox " Новая марка а/м успешно добавлена в базу данных! ", vbLf & "Строка в базе: " & LastRow
            .Range(.Cells(2, 4), .Cells(LastRow + 1, 4)).Borders.LineStyle = xlContinuous ' обрамление ячеек
             MsgBox " Новая марка а/м успешно добавлена в базу данных! " & vbLf & "Строка в базе: " & LastRow

          Else
             MsgBox "Данный а/м есть в базе данных!", vbCritical, "Сообщение": Exit Sub ' Запрет на ввод в базу данных а/м,которые уже присутствуют
        End If
    End With
'  обновление комбобокса
LastRow = Sheets("База").Cells(Rows.Count, 4).End(xlUp).Row 'Нашли последнюю заполненную строку по столбцу D
    n = 0
    With Me.Cmb_МаркаАвто 'Применительно к указанному КомбоБоксу
        For i = 2 To LastRow 'Цикл со второй по последнюю строку
            .AddItem "" 'Добавили пустую строку в КомбоБокс
            .List(n, 0) = Sheets("База").Cells(i, 4).Value 'Заполнили её значением из текущей (в цикле) ячейки столбца D
            n = n + 1 'Увеличили номер строки в КомбоБоксе
        Next
    End With
End Sub
[/vba]
MsgBox таперь "отображается".
Но дальше идет добавление кучи пустых ячеек в комбобокс в цикле вместо одной марки.
Но это уже второй вопрос :'(
 
Ответить
Сообщениеparovoznik, не включайте собственную обработку ошибок, если не собираетесь их ловить.

[vba]
Код
'Кнопка Добавить данные в комбобокс
Private Sub Btn_Add_Cmb_Click()

'On Error Resume Next 'отключаем останов при ошибке
  'проверка на заполнение полей
If Me.Cmb_МаркаАвто = "" Then: MsgBox "Отсутствуют данные", 16, "Сообщение": Exit Sub
    With Me
        МаркаАвто = Cmb_МаркаАвто
    End With
    With Worksheets("База")
        If .Columns(4).Find(МаркаАвто, , xlValues, xlWhole) Is Nothing Then
             LastRow = .Cells(Rows.Count, 4).End(xlUp).Row + 1
            .Cells(LastRow, 4) = Cmb_МаркаАвто
'            .Range(Cells(2, 4), Cells(LastRow + 1, 4)).Borders.LineStyle = xlContinuous ' обрамление ячеек
'             MsgBox " Новая марка а/м успешно добавлена в базу данных! ", vbLf & "Строка в базе: " & LastRow
            .Range(.Cells(2, 4), .Cells(LastRow + 1, 4)).Borders.LineStyle = xlContinuous ' обрамление ячеек
             MsgBox " Новая марка а/м успешно добавлена в базу данных! " & vbLf & "Строка в базе: " & LastRow

          Else
             MsgBox "Данный а/м есть в базе данных!", vbCritical, "Сообщение": Exit Sub ' Запрет на ввод в базу данных а/м,которые уже присутствуют
        End If
    End With
'  обновление комбобокса
LastRow = Sheets("База").Cells(Rows.Count, 4).End(xlUp).Row 'Нашли последнюю заполненную строку по столбцу D
    n = 0
    With Me.Cmb_МаркаАвто 'Применительно к указанному КомбоБоксу
        For i = 2 To LastRow 'Цикл со второй по последнюю строку
            .AddItem "" 'Добавили пустую строку в КомбоБокс
            .List(n, 0) = Sheets("База").Cells(i, 4).Value 'Заполнили её значением из текущей (в цикле) ячейки столбца D
            n = n + 1 'Увеличили номер строки в КомбоБоксе
        Next
    End With
End Sub
[/vba]
MsgBox таперь "отображается".
Но дальше идет добавление кучи пустых ячеек в комбобокс в цикле вместо одной марки.
Но это уже второй вопрос :'(

Автор - Апострофф
Дата добавления - 24.04.2021 в 21:48
parovoznik Дата: Воскресенье, 25.04.2021, 08:22 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
Апострофф, благодарю за ответ.
Цитата Апострофф, 24.04.2021 в 21:48, в сообщении № 3 ()
дальше идет добавление кучи пустых ячеек в комбобокс в цикле вместо одной марки

ненаблюдается добавление строк. Я убрал +1 в строке:
.[vba]
Код
Range(.Cells(2, 4), .Cells(LastRow, 4)).Borders.LineStyle = xlContinuous ' обрамление ячеек
[/vba]
Вроде бы работает. hands
Я всегда использую доп. форму и через нее добавляю, но у меня 4 комба и как под каждый комб. прописать доп. форму не знаю. поэтому пошел по поэтому варианту.
Еще раз спасибо за помощь.
 
Ответить
СообщениеАпострофф, благодарю за ответ.
Цитата Апострофф, 24.04.2021 в 21:48, в сообщении № 3 ()
дальше идет добавление кучи пустых ячеек в комбобокс в цикле вместо одной марки

ненаблюдается добавление строк. Я убрал +1 в строке:
.[vba]
Код
Range(.Cells(2, 4), .Cells(LastRow, 4)).Borders.LineStyle = xlContinuous ' обрамление ячеек
[/vba]
Вроде бы работает. hands
Я всегда использую доп. форму и через нее добавляю, но у меня 4 комба и как под каждый комб. прописать доп. форму не знаю. поэтому пошел по поэтому варианту.
Еще раз спасибо за помощь.

Автор - parovoznik
Дата добавления - 25.04.2021 в 08:22
Апострофф Дата: Воскресенье, 25.04.2021, 09:02 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 444
Репутация: 122 ±
Замечаний: 0% ±

Excel 1997
parovoznik, вот немножко сокращенный код Вашей кнопки-
[vba]
Код
'Кнопка Добавить данные в комбобокс
Private Sub Btn_Add_Cmb_Click()
If Cmb_МаркаАвто = "" Then: MsgBox "Отсутствуют данные", 16, "Сообщение": Exit Sub
If Cmb_МаркаАвто.ListIndex >= 0 Then MsgBox "Данный а/м есть в базе данных!", vbCritical, "Сообщение": Exit Sub ' Запрет на ввод в базу данных а/м,которые уже присутствуют
Cmb_МаркаАвто.AddItem Cmb_МаркаАвто
With Range("База!D2").Resize(Cmb_МаркаАвто.ListCount)
  .Value = Cmb_МаркаАвто.List
  .Borders.LineStyle = xlContinuous
End With
End Sub
[/vba]
 
Ответить
Сообщениеparovoznik, вот немножко сокращенный код Вашей кнопки-
[vba]
Код
'Кнопка Добавить данные в комбобокс
Private Sub Btn_Add_Cmb_Click()
If Cmb_МаркаАвто = "" Then: MsgBox "Отсутствуют данные", 16, "Сообщение": Exit Sub
If Cmb_МаркаАвто.ListIndex >= 0 Then MsgBox "Данный а/м есть в базе данных!", vbCritical, "Сообщение": Exit Sub ' Запрет на ввод в базу данных а/м,которые уже присутствуют
Cmb_МаркаАвто.AddItem Cmb_МаркаАвто
With Range("База!D2").Resize(Cmb_МаркаАвто.ListCount)
  .Value = Cmb_МаркаАвто.List
  .Borders.LineStyle = xlContinuous
End With
End Sub
[/vba]

Автор - Апострофф
Дата добавления - 25.04.2021 в 09:02
parovoznik Дата: Воскресенье, 25.04.2021, 09:09 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
Апострофф, здорово получилось.СПАСИБО!!! hands
 
Ответить
СообщениеАпострофф, здорово получилось.СПАСИБО!!! hands

Автор - parovoznik
Дата добавления - 25.04.2021 в 09:09
_Igor_61 Дата: Воскресенье, 25.04.2021, 19:57 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
parovoznik, в ладоши будете хлопать после увольнения за ошибки ввода. Если не хотите, чтобы это произошло, добавьте проверку комбобокса на пробелы, заглавные-прописные, кириллица-латиница. Очень многие девочки в офисах на это не обращают внимания, и потом идут на форумы с вопросами типа "почему формула (макрос) работает не так, как я хочу". При добавлении новой модели обратите внимание, чтобы добавлялось "BMV" а не " BMV " - для Excel это разные значения, и ему пофиг что для Вас это одна и та же марка машины. Это не в плане претензий к Вам, а в плане того, что Вы пытаетесь использовать способы, не понимая как они работают (вывод сделан из файла в стартовом сообщении). Просто обратите на это внимание, в будущем пригодится :)
 
Ответить
Сообщениеparovoznik, в ладоши будете хлопать после увольнения за ошибки ввода. Если не хотите, чтобы это произошло, добавьте проверку комбобокса на пробелы, заглавные-прописные, кириллица-латиница. Очень многие девочки в офисах на это не обращают внимания, и потом идут на форумы с вопросами типа "почему формула (макрос) работает не так, как я хочу". При добавлении новой модели обратите внимание, чтобы добавлялось "BMV" а не " BMV " - для Excel это разные значения, и ему пофиг что для Вас это одна и та же марка машины. Это не в плане претензий к Вам, а в плане того, что Вы пытаетесь использовать способы, не понимая как они работают (вывод сделан из файла в стартовом сообщении). Просто обратите на это внимание, в будущем пригодится :)

Автор - _Igor_61
Дата добавления - 25.04.2021 в 19:57
parovoznik Дата: Понедельник, 26.04.2021, 10:08 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
братите внимание, чтобы добавлялось "BMV" а не " BMV "

а причем здесь это. У меня в кавычках текста нет. <_<
 
Ответить
Сообщение
братите внимание, чтобы добавлялось "BMV" а не " BMV "

а причем здесь это. У меня в кавычках текста нет. <_<

Автор - parovoznik
Дата добавления - 26.04.2021 в 10:08
_Igor_61 Дата: Вторник, 27.04.2021, 10:49 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
parovoznik, я не про кавычки (кавычки=цитата) а про пробелы и прочее. Совсем недавно разбирался прочему в файле со складским учетом неправильно считаются результаты. Названия брались из выгрузки из 1С. Так вот там кроме лишних пробелов и написания (простых и заглавных букв), благодаря чему появились позиции - дубли, в некоторых наименованиях первые буквы "С" оказались английскими. Какая-то девочка постаралась :) Поэтому и решил Вас предупредить о возможных последствиях. Успехов!
 
Ответить
Сообщениеparovoznik, я не про кавычки (кавычки=цитата) а про пробелы и прочее. Совсем недавно разбирался прочему в файле со складским учетом неправильно считаются результаты. Названия брались из выгрузки из 1С. Так вот там кроме лишних пробелов и написания (простых и заглавных букв), благодаря чему появились позиции - дубли, в некоторых наименованиях первые буквы "С" оказались английскими. Какая-то девочка постаралась :) Поэтому и решил Вас предупредить о возможных последствиях. Успехов!

Автор - _Igor_61
Дата добавления - 27.04.2021 в 10:49
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не отображается сообщение о добавлении данных в комбобокс (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!