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端通用,双击显示,单击其他单元格隐藏。

相关推荐
zbtlink1 小时前
路由器安全深度解析:从WPA3协议到自动化审计
网络·网络安全·智能路由器·wps
AC赳赳老秦3 小时前
网页公开附件自动采集:OpenClaw 批量下载页面内嵌 Word/Excel 附件,统一格式后结构化入库
java·python·word·php·excel·deepseek·openclaw
xiaopai94514 小时前
用WPS做EPC资金计划表:什么时候是表格问题,什么时候已经变成数据关系问题?
wps·建米软件·epc资金计划
扬帆破浪18 小时前
文档自动检查:用 Claude Code、OpenClaw 审 WPS 文件:预览、批注、改正文
运维·服务器·wps
VBAMatrix21 小时前
表格导航!实现Word合并附注与多个Excel的数据同步
word·excel·审计报告·审计·会计师事务所·报告工具
AI英德西牛仔1 天前
手机文心怎么导出文档?AI 导出鸭一键解决格式崩塌与批量归档难题
人工智能·智能手机·excel·deepseek·ai导出鸭
AI导出鸭1 天前
Grok苹果版导出表格的工程化解耦方案:AI导出鸭的技术逻辑与批量实践
人工智能·excel·ai导出鸭
reasonsummer2 天前
【办公类110-05】20260807园园通小班“待补充”户籍地址自动修改(Python+EXCEL)
开发语言·python·excel
qq83443102 天前
一款纯前端的excel控件,XuY_Sheet 电子表格组件教程
前端·excel·教程·luckysheet·xuy_sheet控件·前端表格控件
开开心心就好2 天前
免费压缩软件WinRAR无弹窗、广告干扰
java·开发语言·前端·数据库·python·excel·winrar