Перейти к содержимому

convertCellToRadiobox

await crafttechApi.convertCellToRadiobox(range, options);

Формирует радиобоксы (радиокнопки) на место указанных ячеек в активном файле, из которого запущен текущий макрос.

Данный метод был разработал ввиду ограничений Р7-Офис Таблицы, не предусматривающих создание и взаимодействие с пользовательскими формами и элементами управления.

Не путать с convertCellToCheckbox, который подразумевает множественный выбор опций. В convertCellToRadiobox можно выбрать только одну ячейку из диапазона.

Макрос, использующий данный метод, должен работать в формате автозапуска (А).

  • range (string[] | string) — диапазон ячеек, на основе которых формируются радиобоксы; принимаются диапазоны в виде:
    • одного диапазона в строковом формате ("A1:F1");
    • массива строк с адресами ячеек (["A1", "B1", "C1", "D1", "E1", "F1"]);
    • микс адресов ячеек и диапазонов ячеек в виде массива (["A1", "B1:B4", "C1", "D1", "E1", "F1:F2", "A5:C5"]);
    • диапазоны ячеек с указанием листов (если название листа содержит проблемы, то его нужно указывать в виде одинарных кавычек):["Лист1!A1", "'Расчет года'!B1:B4"]
  • options (string[] | object[]) — необязательный параметр; массив, содержащий бинарные опции с состояниями true или false, соответственно (то есть, если радиобокс активен, то ячейка принимает значение первого элемента параметра, если неактивен, то второго); три случая:
    • string[] — передаём массив строк, если бинарные опции представляют собой строковые значения, например:
      • ['да', 'нет'],
      • ['yes', 'no'],
      • ['ok', 'fail'],
      • ['v', 'x'],
      • и так далее;
    • object[] — передаём массив объектов с конфигурацией стилей если бинарные опции представляют собой форматирование ячеек: изменение цвета, установка границ и так далее;
      • для установки стилей необходимо придерживаться конкретной структуры: для каждого стиля задаётся поле, соответствующее методу Р7-Офис, а в качестве значения — параметры метода в виде массива массивов;
    • если параметр не передаётся или равен пустой строке, на месте ячеек формируются классические чекбоксы в привычном виде: квадрат, внутри которого отмечена или не отмечена галочка в зависимости от состояния.

Если вам необходимо, чтобы на листе было несколько радиобоксов и они работали независимо друг от друга, передавайте адреса ячеек массивом. Если нужно, чтобы на листе работал только один радиобокс вне зависимости от их количества, передавайте диапазон строкой, либо массивом с одним элементом.

Пример бинарных опций, когда нам нужно передать стили:

// ячейка ДА
const yesCell = {
SetBorders: [
["DiagonalDown", "Thin", Api.CreateColorFromRGB(0, 0, 0)],
["DiagonalUp", "Thin", Api.CreateColorFromRGB(0, 0, 0)],
],
SetFillColor: [[Api.CreateColorFromRGB(255, 213, 191)]],
};
// ячейка НЕТ
const noCell = {
SetFillColor: [[Api.CreateColorFromRGB(255, 213, 191)]],
};

Метод ничего не возвращает.

// ячейка ДА
const yesCell = {
SetBorders: [
["DiagonalDown", "Thin", Api.CreateColorFromRGB(0, 0, 0)],
["DiagonalUp", "Thin", Api.CreateColorFromRGB(0, 0, 0)],
],
SetFillColor: [[Api.CreateColorFromRGB(255, 213, 191)]],
};
// ячейка НЕТ
const noCell = {
SetFillColor: [[Api.CreateColorFromRGB(255, 213, 191)]],
};
const choice = [yesCell, noCell];
await crafttechApi.convertCellToRadiobox(["A1:A3", "A5", "A7:A15"], choice);

image

Код выше устанавливает на диапазонах 'A1:A3', 'A5' и 'A7:A15' радиобоксы. Неактивные ячейки содержат заливку персикового цвета, активные — дополнительно границы по диагонали. Активные ячейки — A1, A5, A9; неактивные — все остальные.

При этом каждый из диапазонов, переданных массивом, работают независимо друг от друга. Если нажать на ячейку A12, то ячейка A9 перестанет быть активной, поскольку они принадлежат одному диапазону, в то время как ячейки A1 и A5 останутся в прежнем состоянии, так как за ним закреплены другие диапазона.