행과 열 개수를 얻기 위해 Excel.Worksheet
개체의 UsedRange
속성을 사용했습니다. 열이나 행을 삭제하려고하면 UsedRange
수가 줄여야합니다. 그러나, 많은 디버깅 후 특정 순서대로 열의 속성 및 열 너비를 변경하십시오. 카운트는 이에 따라 변경되지 않으므로 셀에 앵커가 설정되어 있어야합니다. 설명해 주시면 (제 코드에 많은 영향을 미칩니다).C# UsedRange count incorrect
시험 코드 :
Worksheet worksheet = Globals.ThisAddIn.Application.ActiveSheet;
Debug.WriteLine("Used Range Column Count 1: " + worksheet.UsedRange.Columns.Count);
worksheet.Range["A1"].Formula = "1";
worksheet.Range["B1"].Formula = "1";
worksheet.Range["C1"].Formula = "1";
worksheet.Range["D1"].Formula = "1";
Debug.WriteLine("Used Range Column Count 2: " + worksheet.UsedRange.Columns.Count);
Range column = worksheet.Columns[4];
column.Delete();
Debug.WriteLine("Used Range Column Count 3: " + worksheet.UsedRange.Columns.Count);
worksheet.Range["D1"].Formula = "1";
column = worksheet.Columns[4];
column.ColumnWidth = 20.0;
column.Hidden = true;
column.Hidden = false;
column.Delete();
Debug.WriteLine("Used Range Column Count 4: " + worksheet.UsedRange.Columns.Count);
worksheet.Range["D1"].Formula = "1";
column = worksheet.Columns[4];
column.Hidden = true;
column.Hidden = false;
column.ColumnWidth = 20.0;
column.Delete();
Debug.WriteLine("Used Range Column Count 5: " + worksheet.UsedRange.Columns.Count);
결과 :
사용 범위 열 카운트 1 : 1 (예상)
사용 범위 열이 개수 : 4 (예상)
사용 범위 열 카운트 3 : 3 (예상)
사용 범위 열 개수 4 : 4 (예상하지 않음)
사용 범위 열 개수 5 : 3 (예상)
또한 설명 : I는 엑셀 인터페이스를 개선 할 수있는 응용 프로그램에 일하고
. 예를 들어, 사용자는 인벤토리 목록과 구매 비용을 소계 또는 평균 가격 라인으로 끝낼 수 있습니다. (실제 하위 합계 줄은 합계와 평균보다 훨씬 복잡합니다.) 따라서 목록은 확장 가능해야하지만 하위 합계 줄은 확장 할 수 없습니다. 결과적으로 새로운 행이나 새로운 열이 추가되거나 제거되는지 추적해야하므로 Excel 워크 시트의 수를 역사적 (캐시) 수와 교차 점검해야합니다. 새 행이나 열에는 실제 데이터가 없을 수 있으므로 UsedRange 속성을 사용하여 표시된 현재 행/열 개수를 확인했습니다. 따라서 UsedRange에 삭제 된 행/열이 포함되어있어 계산이 불가능합니다. 와, 워크 시트의 마지막 셀을 표시하는 하나의 셀 이름 범위를 사용
: 나는 앵커 효과를 해제 할 수있는 방법을 찾을 수 있지만
, 나는 마지막으로 일을 할 수있는 방법을 알아 냈어 UsedRange 속성을 사용하여 범위를 초기화합니다.
범위에 대한 사용자에게 표시하지 않으려면 워크 시트의 사용자 지정 속성에 데이터를 저장해보십시오. 그러나이 방법은 사용자 작업 추적에 대한 추가 고려 사항이 필요합니다. 행/열을 추가하면 범위 참조가 자동으로 변경됩니다.
코드를 VBA로 변환하고 실행했습니다. 그것은 같은 결과를 낳았다. 'UsedRange' 객체가 작동하는 신비한 방식과 관련이 있다고 생각합니다. 지난 며칠간 여러 게시물을 읽었으며 아직도 어떻게 작동하는지 파악하려고합니다. – vknowles
예, 매우 좌절되었습니다. 마지막으로 사용한 셀을 결정하기 위해 앵커를 설정하는 특정 방법이 필요하다는 것을 이해할 수 있지만 앵커를 제거하는 방법을 제공해야합니다. – Carson
나는 그들이 의도적으로 그렇게하지 않는다고 생각합니다. 다른 Excel 버그와 비슷하게 보이지만 트리거는 폭이 변경된 범위를 숨기고 있습니다. 심지어 [파일 저장] (http://stackoverflow.com/a/11454176/11683)도 도움이되지 않습니다. – GSerg