2016-10-25 42 views
1

我有此代码工作正常,加入FreezePane到行7中,第一片材的第3栏第(从左边算起):为什么FreezePane只能在第一张纸上使用?

private void FreezePane(int rowNum, int colNum) 
{ 
    Range cellToFreeze = (Range)_xlSheet.Cells[rowNum, colNum]; 
    cellToFreeze.Activate(); 
    cellToFreeze.Application.ActiveWindow.FreezePanes = true; 
} 

加入另一对夫妇片的后(第二片材包含数据作为为枢轴表的源极,以及第三片材包含透视表),我想在同一个地方的第三/枢轴表片的添加freezepane,所以我尝试这样做:

private void FreezePanePivotTable(int rowToFreeze, int colToFreeze) 
{ 
    Range pivotTableCellToFreeze = (Range)_xlPivotTableSheet.Cells[rowToFreeze, colToFreeze]; 
    pivotTableCellToFreeze.Activate(); 
    pivotTableCellToFreeze.Application.ActiveWindow.FreezePanes = true; 
} 

也就是说,虽然,坠毁与“激活方法的范围类失败例外来源:Microsoft Office Excel 异常堆栈跟踪:在System.RuntimeType.ForwardCallToInvokeMember(...

所以我想,‘也许你只能有一个工作簿中一个冻结窗格’,并试图调用只有新方法(离开第一片解冻),我也得到这种看似离奇错误信息:“无法设置字体类的大小属性

当该异常正在发生是在片 - 用于片材3 /数据透视表中的源数据片!为什么突然设置字体大小会导致问题? 3418线低于最后一行:

var itemCodeLabelCell = _xlPivotDataSheet.Cells[1, 1]; 
itemCodeLabelCell.Value2 = "ItemCode"; 
itemCodeLabelCell.Style.WrapText = false; 
itemCodeLabelCell.Style.Font.Size = 12; 

做不同的规则适用于主(第一)板和其他添加freezepanes,抑或是FreezePanes和数据透视表不能共存,还是什么?

回答

1

SomeSheet.SomeRange.Activate()如果SomeSheet尚未激活,则可能失败,因此可能是“Range class Activate method failed”。

必须激活之前的纸张:

_xlPivotTableSheet.Activate(); 
pivotTableCellToFreeze.Activate(); 
相关问题