Как удалить чекбоксы в эксель
Argument ‘Topic id’ is null or empty
Сейчас на форуме
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Microsoft в тестовой сборке Office добавила возможность вставлять Checkbox («Чекбокс») в ячейку Excel
Microsoft в тестовой сборке Office добавила возможность вставлять Checkbox («Чекбокс») в ячейку Excel. В компании пояснили, что это оказалась очень востребованная опция среди пользователей популярного офисного приложения.
Согласно пояснению разработчиков, чекбоксы в ячейках могут упростить ввод данных и уменьшить количество ошибок пользователя при работе с электронными таблицами и формулами, содержащими значения True и False.
В новой тестовой версии Excel из состава Microsoft 365 версии 2310 (сборка 196924.2000) на вкладке «Вставка» на ленте появилась группа под названием «Элементы управления ячейками». На данный момент там только один вариант Checkbox («Чекбокс»). Microsoft обещает добавить другие варианты для этой опции в будущих обновлениях.
Чтобы добавить чекбокс в ячейки Excel, нужно выбрать диапазон ячеек, в которых будут установлены чекбоксы, перейти на вкладку «Вставка» и в разделе «Элементы управления ячейками» нажать кнопку «Чекбокс». В этом случае во всех выбранных пустых ячейках будут установлены чекбоксы со значением по умолчанию False, а все существующие значения и формулы останутся неизменными.
Также стоит отметить, что чекбоксы работают только с логическими значениями и пустыми ячейками. Чтобы поставить в чекбоксе галочку True, нужно щёлкнуть кнопкой мыши в этом поле или выделить ячейку и нажать пробел.
Новая опция с добавлением чекбоксов находится в процессе тестирования. Пока что существует одна известная проблема, из-за которой невозможно удалить чекбокс из ячейки напрямую. Чтобы убрать чекбокс, нужно вручную выбрить ячейку и нажать в меню Excel кнопку «Очистить форматы» (Home -> Clear -> Clear Formats).
В сентябре Microsoft представила дополнение Python Editor от команды Excel Labs для расширенной и экспериментальной работы с языком программирования Python в Excel. Дополнение Python Editor позволяет вводить более длинный и сложный код в электронные таблицы и ячейки Excel.
В августе Microsoft сообщила, что добавила в бета-версию Microsoft 365 язык программирования Python в Excel для улучшения возможности анализа и визуализации данных. Ограничения в рамках интеграции Python и Excel: запуск в облачной среде, использование защищённых библиотек, предоставленных Anaconda, запрет доступа к сети, запрет обращения к пользовательским токенам, код Python не будет иметь доступа к другим свойствам файла, таким как формулы, диаграммы, сводные таблицы, макросы или код VBA.
- Разработка под Windows
- История IT
- Софт
- Будущее здесь
Check Box. Delete Метод
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Удаляет динамически созданный объект CheckBox из рабочего листа, а затем удаляет его из коллекции ControlCollection.
public object Delete ();
Возвращаемое значение
Примеры
Пример кода, демонстрирующий использование этого метода, см. в разделе Microsoft.Office.Tools.Excel.Controls.Button.Delete . Все элементы управления в Microsoft.Office.Tools.Excel.Controls пространстве имен имеют функционально эквивалентный Delete метод.
Комментарии
Этот метод следует использовать только с CheckBox , который создается программно во время выполнения. Исключение возникает при вызове этого метода для объекта CheckBox , который добавляется на лист во время разработки.
Как продублировать флажки и при этом чтобы они правильно работали в Excel?

Как продублировать флажки для каждой ячейке, при это не копировать каждый флажок и отдельно настраивать, чтобы при включеном флажке показывалась значение, а при выключеном «-» не показвалось?
Отслеживать
2,313 2 2 золотых знака 10 10 серебряных знаков 38 38 бронзовых знаков
задан 8 окт 2021 в 12:29
adam vensic adam vensic
Добро пожаловать на SO! Продублировать (или автоматически создать нужное количество) не очень сложно — этот макрос много раз скопирован в интернете. А вот с «отображением» — будут проблемы. Сам посуди — сбрасываем флажок и видим «-«. А теперь взводим его опять и. Откуда взять затёртое значение?
8 окт 2021 в 12:39
Макросом. Но это тупиковый путь — множить объекты. Использовать событие листа Private Sub Worksheet_SelectionChange(ByVal Target As Range) . При клике на ячейке записывается/удаляется/меняется любое значение (можно и прототип галки поставить, есть такие в шрифтах Wingdings)
8 окт 2021 в 12:41
@vikttur Да, чаще всего это избыточный дизайн. Если речь не идёт об удобстве туповатенькой сотрудницы, которая с компьютером очень «на Вы» и предпочитает «позвать мальчика», чтобы в очередной раз всё сделал за неё, чем взяться за мышку.
8 окт 2021 в 13:05
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Макрос действительно очень простой:
Private Sub RecreateCheckboxes() Const cDblCheckboxWidth As Double = 16 ' Ширина и высота будущих чекбоксов Const cStrCheckboxPrefix As String = "cbOplata_" ' Часть имени чекбоксов, создаваемых этой процедурой (чтобы не спутать с другими) Dim cb As CheckBox ' Один чекбокс - объект Dim rng As Range ' Диапазон ячеек, к которых чекбоксы будут созданы Dim rCell As Range ' Одна отдельная ячейка из этого диапазона Dim i As Long Application.ScreenUpdating = False ' Заморозить экран на время работы макроса On Error GoTo beforeExit 'Сначала удалить все чекбоксы с префиксом cStrCheckboxPrefix, чтобы не создавать дубли For Each cb In CheckBoxes If Left(cb.Name, Len(cStrCheckboxPrefix)) = cStrCheckboxPrefix Then cb.Delete Next Set rng = . ' Каким-нибудь способом определить диапазон, например, [D5:D30] For Each rCell In rng 'Разместить новый чекбокс в ячейке Set cb = CheckBoxes.Add( _ rCell.Left + rCell.Width / 2 - cDblCheckboxWidth / 2, _ rCell.Top, cDblCheckboxWidth, rCell.Height) 'Задать свойства нового чекбокса With cb .Name = cStrCheckboxPrefix & rCell.Address(False, False) 'Имя чекбокса будет вроде "cbOplata_D7" .Value = rCell.Value ' Сразу взвести или сбросить чекбокс в зависимости от значения в ячейке .LinkedCell = rCell.Address ' Привязать чекбокс к своей ячейке .Display3DShading = True .Characters.Text = "" End With 'Чтобы подавить вывод ИСТИНА/ЛОЖЬ в ячейке - спрячем любое её содержимое rCell.NumberFormat = ";;;" Next rCell beforeExit: Application.ScreenUpdating = True ' Разморозить экран End Sub
Будем считать, что настоящее значение для оплаты есть в какой-то предыдущей ячейке, а в колонке «Сума для передоплати» только формулы вида
=IF(D7;B7;"-") =ЕСЛИ(D7;B7;"-")
Не проверял, но должно работать Проверил. Возможно, перед обоими CheckBoxes нужно добавить указание на лист — ActiveSheet.CheckBoxes или что-то подобное.
