배열의 범위 형식을 복사하는 방법이 있습니까?
제기 된 질문에 초점을 맞 춥니 다. 불행하게도, 예를 들어 myArray = Range("A2:F25")
으로 배열에 범위 값을 할당 할 수있는 방식으로 한 줄짜리 코드에서는 수행 할 수 없습니다. (또한, brettdj의 의견을 참조하십시오.) 대신, 같은 필요할 것 :하지만
Dim rng as Range
Dim formatArray() As String
Dim i as Long, j as Long
Set rng = Range(A2:F20) 'or whatever the range is
Redim formatArray(1 to rng.Rows.Count, 1 to rng.Columns.Count)
For i = 1 to rng.Rows.Count
For j = 1 to rng.Columns.Count
formatArray(i, j) = rng.Cells(i, j).NumberFormat
Next
Next
...
관찰의 커플 : 당신은 실제로 단지의 단일 행에 대한 서식을 알 필요가
을 범위 내에서 열의 숫자 서식이 중간 열로 변경되지 않기 때문일 수 있습니다. 코드로 단순화 할
:
...
Redim formatArray(1 to rng.Columns.Count)
For i = 1 to rng.Columns.Count
formatArray(i) = rng.Cells(1, i).NumberFormat
Next
...
는 가정의 예를 위해서, 그 범위의 1 행은 필요한 수의 형식을 갖는다.
워크 시트의 수식을 수정하여 왜곡 할 수 있는지 궁금합니다. 아마도 코드에서 계산을 수행하고 반올림하여 결과 값을 다시 시트에 쓸 수 있기 때문입니다. 보고서.
워크 시트에 쓰고있는 값에 숫자 형식을 적용해야합니다 (숫자를 생성 할 수있는 수식을 수정할 수있는 것은 아닙니다). 범위 내의 전체 열 (예 :
)에 대해 숫자 형식을 적용해야하는 경우
...
For i = 1 to rng.Columns.Count
rng.Columns(i).NumberFormat = formatArray(i)
Next
...
당신이 둥근 값으로 셀의 수식의 결과를 변환해야하는 경우, 당신은 하나의 셀에 대한 예를 제공하는
rng.Cells(2, 5).Value = WorksheetFunction.Round(rng.Cells(2, 5).Value, 0)
처럼 뭔가 그렇게 할 수 있습니다. 물론 수식에 입력되는 데이터가 이미 시트에 있으며 수식이 다시 계산 된 것으로 가정합니다.
프레젠테이션을 표현과 혼합하는 것처럼 들립니다. –
죄송합니다. 무슨 소리 야? –
미치 밀 (Mitch Wheat)에 동의합니다. 그는 배열에 표시 한 데이터가 동일한 데이터의 프레젠테이션과 분리되어 있어야한다는 것을 의미합니다. – rwisch45