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

Вход

Регистрация

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

 

= Мир MS Excel/В списке комбобокса отображаются удаленные наименования - Мир MS Excel

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

Excel 2016
Здравствуйте!
Ребята, при удалении строк с наименованиями, загруженных в комбобокс с таблицы, в комбобоксе отображаются два конечных наименования хотя в таблицы они удалены.
В чем причина, что необходимо поправить?
К сообщению приложен файл: 0984470.xlsm (18.3 Kb)
 
Ответить
СообщениеЗдравствуйте!
Ребята, при удалении строк с наименованиями, загруженных в комбобокс с таблицы, в комбобоксе отображаются два конечных наименования хотя в таблицы они удалены.
В чем причина, что необходимо поправить?

Автор - Сергей13
Дата добавления - 06.05.2019 в 19:16
RAN Дата: Понедельник, 06.05.2019, 19:37 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
tabl_fio


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщениеtabl_fio

Автор - RAN
Дата добавления - 06.05.2019 в 19:37
Сергей13 Дата: Понедельник, 06.05.2019, 20:12 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, если правильно понял, то назначить свойству, в тоже время если вписать непосредственно в свойствах то при удалении остаются пустые строки.
Если же через код

[vba]
Код
FormBD.Cmb_fio.RowSource = "tabl_fio"
[/vba]
то пустые строки при удалении не проявляются.
Сколько же нюансов…
Спасибо!


Сообщение отредактировал Сергей13 - Понедельник, 06.05.2019, 20:13
 
Ответить
СообщениеRAN, если правильно понял, то назначить свойству, в тоже время если вписать непосредственно в свойствах то при удалении остаются пустые строки.
Если же через код

[vba]
Код
FormBD.Cmb_fio.RowSource = "tabl_fio"
[/vba]
то пустые строки при удалении не проявляются.
Сколько же нюансов…
Спасибо!

Автор - Сергей13
Дата добавления - 06.05.2019 в 20:12
RAN Дата: Понедельник, 06.05.2019, 20:23 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Цитата Сергей13, 06.05.2019 в 20:12, в сообщении № 3 ()
если правильно понял

Даже и близко не лежало... :o

Даже, точнее
К сообщению приложен файл: 3468334.jpg (10.4 Kb) · 3106426.jpg (23.8 Kb)


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Понедельник, 06.05.2019, 20:35
 
Ответить
Сообщение
Цитата Сергей13, 06.05.2019 в 20:12, в сообщении № 3 ()
если правильно понял

Даже и близко не лежало... :o

Даже, точнее

Автор - RAN
Дата добавления - 06.05.2019 в 20:23
Сергей13 Дата: Понедельник, 06.05.2019, 21:40 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, Усмотрел только то, что создан дополнительный диапазон, создал похожее...
Не пойму как это должно разрешить задачу?
К сообщению приложен файл: 1192946.png (16.1 Kb)


Сообщение отредактировал Сергей13 - Понедельник, 06.05.2019, 21:41
 
Ответить
СообщениеRAN, Усмотрел только то, что создан дополнительный диапазон, создал похожее...
Не пойму как это должно разрешить задачу?

Автор - Сергей13
Дата добавления - 06.05.2019 в 21:40
RAN Дата: Вторник, 07.05.2019, 10:37 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Ошибка в неправильном использовании
[vba]
Код
On Error Resume Next
[/vba]
Вчера немного сбило с толку использование в одном коде 2 различных способов обращения к таблице.
Именованный диапазон, действительно, здесь не нужен.
Вы можете использовать любой способ обращения, но не смешивайте их, поскольку они требуют разного кода
[vba]
Код
Private Sub But_fio_delete_Click()                'Удаление строки наименования в таблице tabl_fio

    Dim CellFio As Range
    '''''''''''''''''''''''''''''''''' ИЛИ '''''''''''''''''''''''''''''''''''
    With ThisWorkbook.Worksheets("fio").ListObjects("tabl_fio")
        If Not .DataBodyRange Is Nothing Then
            With .DataBodyRange
                Set CellFio = .Find(FormBD.Cmb_fio.Value, LookAt:=xlWhole)    'Поиск наименования в таблице tabl_fio
                If Not CellFio Is Nothing Then                'Если найдено наименование в таблице tabl_fio идентичное с наименованием комбобокса
                    CellFio.EntireRow.Delete                  'Удалить строку с найденным наименованием в таблице tabl_fio
                End If
                FormBD.Cmb_fio.Value = ""                     'Очистка комбобокса
                If Not IsArray(.Value) Then
                    FormBD.Cmb_fio.List = Array(.Value)
                Else
                    FormBD.Cmb_fio.List = .Value
                End If
            End With
        End If
    End With
    '''''''''''''''''''''''''''''''''' ИЛИ '''''''''''''''''''''''''''''''''''
'    If Not Range("tabl_fio") Is Nothing Then
'        Set CellFio = Range("tabl_fio").Find(FormBD.Cmb_fio.Value, LookAt:=xlWhole)    'Поиск наименования в таблице tabl_fio
'        If Not CellFio Is Nothing Then                'Если найдено наименование в таблице tabl_fio идентичное с наименованием комбобокса
'            On Error Resume Next
'            CellFio.EntireRow.Delete                  'Удалить строку с найденным наименованием в таблице tabl_fio
'        End If
'        FormBD.Cmb_fio.Value = ""                     'Очистка комбобокса
'        If Not IsArray(Range("tabl_fio").Value) Then
'            FormBD.Cmb_fio.List = Array(Range("tabl_fio").Value)
'        Else
'            FormBD.Cmb_fio.List = Range("tabl_fio").Value
'        End If
'    End If
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеОшибка в неправильном использовании
[vba]
Код
On Error Resume Next
[/vba]
Вчера немного сбило с толку использование в одном коде 2 различных способов обращения к таблице.
Именованный диапазон, действительно, здесь не нужен.
Вы можете использовать любой способ обращения, но не смешивайте их, поскольку они требуют разного кода
[vba]
Код
Private Sub But_fio_delete_Click()                'Удаление строки наименования в таблице tabl_fio

    Dim CellFio As Range
    '''''''''''''''''''''''''''''''''' ИЛИ '''''''''''''''''''''''''''''''''''
    With ThisWorkbook.Worksheets("fio").ListObjects("tabl_fio")
        If Not .DataBodyRange Is Nothing Then
            With .DataBodyRange
                Set CellFio = .Find(FormBD.Cmb_fio.Value, LookAt:=xlWhole)    'Поиск наименования в таблице tabl_fio
                If Not CellFio Is Nothing Then                'Если найдено наименование в таблице tabl_fio идентичное с наименованием комбобокса
                    CellFio.EntireRow.Delete                  'Удалить строку с найденным наименованием в таблице tabl_fio
                End If
                FormBD.Cmb_fio.Value = ""                     'Очистка комбобокса
                If Not IsArray(.Value) Then
                    FormBD.Cmb_fio.List = Array(.Value)
                Else
                    FormBD.Cmb_fio.List = .Value
                End If
            End With
        End If
    End With
    '''''''''''''''''''''''''''''''''' ИЛИ '''''''''''''''''''''''''''''''''''
'    If Not Range("tabl_fio") Is Nothing Then
'        Set CellFio = Range("tabl_fio").Find(FormBD.Cmb_fio.Value, LookAt:=xlWhole)    'Поиск наименования в таблице tabl_fio
'        If Not CellFio Is Nothing Then                'Если найдено наименование в таблице tabl_fio идентичное с наименованием комбобокса
'            On Error Resume Next
'            CellFio.EntireRow.Delete                  'Удалить строку с найденным наименованием в таблице tabl_fio
'        End If
'        FormBD.Cmb_fio.Value = ""                     'Очистка комбобокса
'        If Not IsArray(Range("tabl_fio").Value) Then
'            FormBD.Cmb_fio.List = Array(Range("tabl_fio").Value)
'        Else
'            FormBD.Cmb_fio.List = Range("tabl_fio").Value
'        End If
'    End If
End Sub
[/vba]

Автор - RAN
Дата добавления - 07.05.2019 в 10:37
Сергей13 Дата: Вторник, 07.05.2019, 18:47 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, Здравствуйте.

Все-таки, хотелось бы уточнить.
Так как таблица это одна колонка (изменяющаяся по строкам), а список комбобокса данной таблицы не имеет взаимосвязей со списками комбобоксов иных таблиц, то почему более упрощенный вариант со свойством RowSource без условий или обработок ошибок не может тоже быть вариантом?
Потому как применяя данную строку кода,

[vba]
Код
FormBD.Cmb_fio.RowSource = "tabl_fio"
[/vba]
при активации формы (как загрузка списка), а в дальнейшем в конце процедуры при выполнении основного кода (как обновление списка при изменении строк таблицы) каких-то искажений и сбоев не обнаружил.


Сообщение отредактировал Сергей13 - Вторник, 07.05.2019, 22:03
 
Ответить
СообщениеRAN, Здравствуйте.

Все-таки, хотелось бы уточнить.
Так как таблица это одна колонка (изменяющаяся по строкам), а список комбобокса данной таблицы не имеет взаимосвязей со списками комбобоксов иных таблиц, то почему более упрощенный вариант со свойством RowSource без условий или обработок ошибок не может тоже быть вариантом?
Потому как применяя данную строку кода,

[vba]
Код
FormBD.Cmb_fio.RowSource = "tabl_fio"
[/vba]
при активации формы (как загрузка списка), а в дальнейшем в конце процедуры при выполнении основного кода (как обновление списка при изменении строк таблицы) каких-то искажений и сбоев не обнаружил.

Автор - Сергей13
Дата добавления - 07.05.2019 в 18:47
Сергей13 Дата: Вторник, 07.05.2019, 23:41 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, При вставке строк тоже необходимо использовать один из вариантов?
В данном случае, правильна ли расстановка второго варианта обновления списка при добавлении строки с данными?
[vba]
Код
Sub row_tabl_fio() 'Ввод данных в строку таблицы  tabl_fio
    'Поиск наменования в таблице tabl_fio
    If Not 'Если найдено похожее наименование в таблице tabl_fio Is Nothing Then
        'Сообщение
    Else
        On Error Resume Next
        'Ссылка на переменную добавленя строк в таблице tabl_fio
        'Данные комбобокса вводятся в строку таблицы tabl_fio
        'Сортировка таблицы tabl_fio
        If Not IsArray(Range("tabl_fio").Value) Then
            FormBD.Cmb_fio.List = Array(Range("tabl_fio").Value)
        Else
            FormBD.Cmb_fio.List = Range("tabl_fio").Value
        End If
    End If
End Sub
[/vba]


Сообщение отредактировал Сергей13 - Вторник, 07.05.2019, 23:46
 
Ответить
СообщениеRAN, При вставке строк тоже необходимо использовать один из вариантов?
В данном случае, правильна ли расстановка второго варианта обновления списка при добавлении строки с данными?
[vba]
Код
Sub row_tabl_fio() 'Ввод данных в строку таблицы  tabl_fio
    'Поиск наменования в таблице tabl_fio
    If Not 'Если найдено похожее наименование в таблице tabl_fio Is Nothing Then
        'Сообщение
    Else
        On Error Resume Next
        'Ссылка на переменную добавленя строк в таблице tabl_fio
        'Данные комбобокса вводятся в строку таблицы tabl_fio
        'Сортировка таблицы tabl_fio
        If Not IsArray(Range("tabl_fio").Value) Then
            FormBD.Cmb_fio.List = Array(Range("tabl_fio").Value)
        Else
            FormBD.Cmb_fio.List = Range("tabl_fio").Value
        End If
    End If
End Sub
[/vba]

Автор - Сергей13
Дата добавления - 07.05.2019 в 23:41
Мир MS Excel » Вопросы и решения » Вопросы по VBA » В списке комбобокса отображаются удаленные наименования (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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