我正在嘗試創建單選復選框,當復選框處于垂直狀態時,我設法使其作業,如下面的示例表所示,選項卡名稱為“Radio 1”,但我有另一個選項卡“Radio 2”,其中復選框水平對齊并且不是一個接一個地對齊,而是在每 2 個單元格之后,第一個 Radio 使用以下代碼
function onEdit(e) {
if (e.range.columnStart != 2 || e.range.rowStart == 1 || e.range.rowStart > 8 || e.value != "TRUE") return;
let r = SpreadsheetApp.getActive().getActiveSheet().getRange(2,2,7);
let checks = r.getValues();
for (let i in checks){
if(checks[i][0] == true && i != e.range.rowStart - 2)
checks[i][0] = false;
}
r.setValues(checks);
}
但是在適應第二個單選標簽時我無法使其作業,有什么想法嗎?
表鏈接
uj5u.com熱心網友回復:
嘗試
function onEdit(e) {
var sh = e.source.getActiveSheet()
if (sh.getName() == 'Radio 1') {
if (e.range.columnStart != 2 || e.range.rowStart == 1 || e.range.rowStart > 8 || e.value != "TRUE") return;
let r = SpreadsheetApp.getActive().getActiveSheet().getRange(2, 2, 7);
let checks = r.getValues();
for (let i in checks) {
if (checks[i][0] == true && i != e.range.rowStart - 2)
checks[i][0] = false;
}
r.setValues(checks);
}
else if (sh.getName() == 'Radio 2') {
var cel = e.source.getActiveRange()
if (cel.getRow() == 11 && cel.getValue() == true) {
var r = sh.getRange('H' cel.getRow() ':S' cel.getRow())
var checks = r.getValues()
for (var i=0;i<checks[0].length;i =2) {
if (checks[0][i] == true && i != cel.getColumn()-8)
if (checks[0][i]==true) {checks[0][i] = false};
}
r.setValues(checks);
}
}
}
如果要應用于多行,請更改此cel.getRow() == 11
uj5u.com熱心網友回復:
在您的情況下,如何進行以下修改?
修改后的腳本:
在此修改中,使用了復選框的單元格范圍。
function onEdit(e) {
// This is from your sample Spreadsheet.
// The cell ranges of checkboxes are set as A1Notation.
const obj = {
'Radio 1': ["B2", "B3", "B4", "B5", "B6", "B7", "B8"],
'Radio 2': ["H11", "J11", "L11", "N11", "P11", "R11"]
};
const sheet = e.source.getActiveSheet();
const sheetName = sheet.getSheetName();
const a1Notation = e.range.getA1Notation();
if (!obj[sheetName] || !obj[sheetName].includes(a1Notation) || e.range.getValue() === false) return;
sheet.getRangeList(obj[sheetName].filter(e => e != a1Notation)).uncheck();
}
- 運行此腳本時,如果選中“Radio 1”或“Radio 2”上的復選框,則未選中其他選中的復選框。
- 如果您想添加“Radio 3”等,請將它們添加到
obj.
筆記:
- 當您更改復選框和作業表名稱時,請修改
obj. 請注意這一點。
參考:
- 篩選()
- 類 RangeList 的 uncheck()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/442367.html
