永中Office电子表格两行或两列互换宏

/**
 *  首尾两列互换
 * 先将首列复制粘贴到新建的临时工作表中,再将尾列复制到首列上;
 * 最后将临时工作表的列复制到尾列
 */
void ColSwap()
{	
        String strTempSheet = "$tmp" + java.lang.System.currentTimeMillis() + "pmt$"; //临时工作表名
        Worksheets worksheets =  Application.getWorkbooks().getActiveWorkbook().getWorksheets();
        Worksheet sheet = worksheets.getActiveWorksheet();
        maxColumn = sheet.getMaxDataColumn(); //当前表有数据的最大列范围
        maxRow = sheet.getMaxDataRow(); //当前表有数据的最大行范围
    
        Range range = sheet.getActiveRange();  //当前选中范围     
        startColumn = range.getStartColumn();
        endColumn = range.getEndColumn();
        if(startColumn == endColumn){
            Application.getDialogs().showMessageDialog("只选一列无法进行两列互换哟.");
            return;
        }
//        if(endColumn > maxColumn){
//            endColumn =maxColumn;
//        }
        startRow = range.getStartRow();
        endRow = range.getEndRow();
//        if(endRow > maxRow){
//            endRow = maxRow;
//        }
        
        //起始列复制粘贴到临时工作表中
        range = sheet.getRange(startRow, startColumn, endRow, startColumn);
        range.copy();
        Worksheet tempsheet = worksheets.addWorksheet(strTempSheet);
        tempsheet.activate();
        range = tempsheet.getRange(startRow, startColumn, endRow, startColumn);
        range.paste();
        
        //终止列复制粘贴到起始列
        sheet.activate();
        range = sheet.getRange(startRow, endColumn, endRow, endColumn);
        range.copy();
        range = sheet.getRange(startRow, startColumn, endRow, startColumn);
        range.paste();
        
        //临时表的起始列复制粘贴到表的终止列
        tempsheet.activate();
        range = tempsheet.getRange(startRow, startColumn, endRow, startColumn);
        range.copy();
        sheet.activate();
        range = sheet.getRange(startRow, endColumn, endRow, endColumn); 
        range.paste();
        
        //清剪贴板,删除临时工作表
        Application.getClipboard().clear();        
        worksheets.removeWorksheet(strTempSheet); 
        sheet.activate();
}


转载于:https://my.oschina.net/u/1433826/blog/614936

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值