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

相关推荐
Codiggerworld14 小时前
Vim 实战:在 VS Code、JetBrains、终端里玩转 Vim
编辑器·vim·excel
开开心心_Every16 小时前
多连接方式的屏幕共享工具推荐
运维·服务器·pdf·电脑·excel·tornado·dash
PythonFun20 小时前
WPS智能文档:解锁高效写作新体验
人工智能·wps
Jun6262 天前
QT(4)-EXCEL操作
开发语言·qt·excel
TMT星球2 天前
他用WPS笔记,把AI报错变成了可复用的“避坑指南”
笔记·wps
2501_907136822 天前
Excel文件强效安全修复工具-清理安全风险 可修复WPS编辑后Excel无法打开的文件
excel·wps
一位代码2 天前
Excel 文本连接符 & :基础用法与进阶技巧详解
excel
焱文8192 天前
wps excel指定数据区域,二维码生成区域,批量生成单元格二维码VBA宏代码
excel·wps
夏天里的肥宅水2 天前
EXCEL生成日历
excel
天才程序YUAN3 天前
Windows 资源管理器左侧 WPS 云盘残留项删除教程:卸载后仍显示怎么办?
windows·wps