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

相关推荐
曦夜日长1 天前
Linux系统篇,开发工具(二):vim的使用与配置
linux·服务器·vim·excel
专注VB编程开发20年1 天前
逍遥Pya IDE -- 可视化Python开发工具,类似VBA WPS(JSA)
ide·python·wps
金玉满堂@bj1 天前
pytest+uiautomation+allure+Excel 数据驱动桌面自动化
自动化·excel·pytest
99乘法口诀万物皆可变2 天前
BMS HIL 自动化测试框架方案(基于 CANoe + C# + Excel)
开发语言·c#·excel
清山博客2 天前
Python调整EXCEL内容高度
excel
anlog2 天前
excel计算今天的日期加上n天后的日期
excel·日期计算·今天日期
chatexcel2 天前
AI知识库教程:基于ChatExcel实现规则文档、Excel数据与业务分析联动
人工智能·excel
Yana.nice2 天前
Excel中以当前列的数值作为查找条件,查找匹配的行
excel
Teable任意门互动3 天前
AI原生开源多维表格有哪些?主流开源多维表格对比解析
数据库·开源·excel·钉钉·飞书·开源软件·ai-native
Cloud_Shy6183 天前
Python 数据分析基础入门:《Excel Python:飞速搞定数据分析与处理》学习笔记系列(第八章 使用读写包操作 Excel 文件 上篇)
python·数据分析·excel·pandas