为什么FreezePane只能在第一张纸上使用?

我有这个代码,工作正常,添加一个FreezePane第7行,第一列第3列(从左数):

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

在添加另外几张纸(第二张纸包含数据作为数据透视表的来源,第三张纸包含数据透视表)后,我想添加一个冻结面板在第三张/透视表的同一位置我试过这个:

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

那,虽然,崩溃与“ 激活方法的范围类失败exception来源:Microsoft Office ExcelexceptionStackTrace:在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和数据透视表不能共存?

SomeSheet.SomeRange.Activate()失败,如果SomeSheet尚未活动,因此可能是“范围类的激活方法失败”。

您必须在激活表单之前:

 _xlPivotTableSheet.Activate(); pivotTableCellToFreeze.Activate();