wps表格内编写一个JSA宏用来背单词

一、需求

第一列正常显示 第二列第三列默认隐藏 点击第二列或者第三列的单元格该单元格显示 再次点击后该单元格隐藏 第二列和第三列的其他单元格默认隐藏

二、代码

javascript 复制代码
/**
 * WPS JSA 宏代码
 * 功能:
 * 1. 工作表激活时,默认隐藏第2列(B)和第3列(C)的所有单元格内容。
 * 2. 点击第2列或第3列的任意单元格,切换该单元格的显示/隐藏状态。
 *    - 如果当前隐藏,则显示。
 *    - 如果当前显示,则再次隐藏。
 * 3. 第1列(A)保持正常显示,不受影响。
 * 
 * 注意:此代码应放置在工作表对象(如Sheet1)的代码窗口中,以响应事件。
 * 如果放在普通模块,需要手动绑定事件或使用其他方式触发,但工作表对象是最佳实践。
 */

// 全局变量,用于记录最后操作的单元格,可选功能:点击新单元格时自动隐藏旧单元格
// 根据需求"再次点击后该单元格隐藏",这里采用仅切换当前点击单元格状态的逻辑,
// 若需"互斥显示"(即同时只显示一个),可启用下面的互斥逻辑。

let lastVisibleCell = null; // 记录当前显示的单元格,用于互斥逻辑

function Worksheet_Activate() {
    // 当工作表被激活时,初始化隐藏B列和C列
    hideColumnContent(2);
    hideColumnContent(3);
}

function Worksheet_SelectionChange(Target) {
    // 当选择区域改变时触发
    
    // 1. 确保只选中了一个单元格
    if (Target.Count > 1) return;
    
    let col = Target.Column;
    
    // 2. 检查是否在第2列或第3列
    if (col !== 2 && col !== 3) return;
    
    // 3. 切换当前单元格的显示/隐藏状态
    toggleCellVisibility(Target);
    
    // --- 可选:互斥逻辑 ---
    // 如果希望同一时间B/C列只有一个单元格显示,取消以下注释
    /*
    if (lastVisibleCell && lastVisibleCell.Address !== Target.Address) {
        // 隐藏上一个显示的单元格
        setCellHidden(lastVisibleCell);
    }
    // 如果当前单元格变为显示状态,则更新记录
    if (Target.NumberFormatLocal !== ";;;") {
        lastVisibleCell = Target;
    } else {
        // 如果当前单元格被隐藏,且它是之前记录的,则清空记录
        if (lastVisibleCell && lastVisibleCell.Address === Target.Address) {
            lastVisibleCell = null;
        }
    }
    */
    // ---------------------
}

/**
 * 隐藏指定列的所有单元格内容
 * @param {number} colIndex - 列索引 (1-based)
 */
function hideColumnContent(colIndex) {
    let sheet = Application.ActiveSheet;
    // 获取整列
    let col = sheet.Columns.Item(colIndex);
    // 设置自定义格式为 ;;; (视觉隐藏)
    col.NumberFormatLocal = ";;;";
}

/**
 * 切换单个单元格的显示/隐藏状态
 * @param {Range} cell - 目标单元格对象
 */
function toggleCellVisibility(cell) {
    // 检查当前格式是否为隐藏格式
    if (cell.NumberFormatLocal === ";;;") {
        // 如果是隐藏的,则显示(恢复为常规格式)
        cell.NumberFormatLocal = "General";
    } else {
        // 如果是显示的,则隐藏
        cell.NumberFormatLocal = ";;;";
    }
}

/**
 * 强制隐藏单个单元格
 * @param {Range} cell - 目标单元格对象
 */
function setCellHidden(cell) {
    cell.NumberFormatLocal = ";;;";
}

三、运行

WPS->工具->WPS宏编辑器->插入代码->保存

手机和pc端通用,双击显示,单击其他单元格隐藏。

相关推荐
工具派19 小时前
JSON转Excel后18位订单号不对了?数字精度与类型边界实测
json·excel
Allstar_432 天前
制造业研发管理数字化:从 Excel 到专业 APQP 系统的架构选型思考
架构·excel
驾驭人生2 天前
NET NPOI 实战:生成带下拉、数据校验、必填标红的 Excel 导入模板
excel
泡海椒2 天前
把 TRANSFORM 做成可扩展能力:JQuick-Excel 的函数与 SPI 调用链
驱动开发·excel
2601_962780912 天前
2027采购岗准备:大数据管理与应用专业如何把Excel、SQL变成业务能力
excel
开开心心_Every2 天前
文件查重软件批量删除重复文件释放空间
java·开发语言·c#·计算机外设·ocr·excel·perl
泡海椒2 天前
Spring 项目中如何组织 JQuick-Excel 的 XML 与 Bean
xml·spring·excel
死磕音视频2 天前
Microsoft Copilot 办公入门:在 Word、Excel、PowerPoint 里用 AI 完成日常文档工作
word·excel·copilot·办公效率
Access开发易登软件2 天前
我全新开发了一套 Access 通用 Excel 导入工具,现在开源了
数据库·microsoft·excel·mfc·vba·access·access开发