2016-10-25 4 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 Исключение StackTrace: в System.RuntimeType.ForwardCallToInvokeMember (... "

Так что я подумал,„может быть, вы можете иметь только одну замороженную область в книге“и попытался назвать только новый метод (оставляя первый лист незамерзшей), и я получаю эту, казалось бы, странное Сообщение об ошибке: «Невозможно установить размер свойство класса Font»

Где это исключение происходит это в второго листа - исходные данные для листов 3/PivotTable лист! Почему установка размера шрифта внезапно вызывает проблему? Линия 3418 является последней строкой ниже:

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

ли другие правила добавления freezepanes на главном (первом) листе и других, или это что FreezePanes и PivotTables не могут сосуществовать, или что?

ответ

1

SomeSheet.SomeRange.Activate() не работает, если SomeSheet еще не активен, поэтому, вероятно, «Активировать метод класса диапазона не удалось».

Вы должны активировать лист перед:

_xlPivotTableSheet.Activate(); 
pivotTableCellToFreeze.Activate(); 
Смежные вопросы