您的位置:首页 > 其它

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

2016-02-15 00:00 204 查看
摘要: 用于永中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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息