반응형
각 워크시트 루프에 대한 Excel VBA
기본적으로 워크북의 각 시트를 살펴본 다음 열 너비를 업데이트하는 코드 작업을 수행하고 있습니다.다음은 제가 작성한 코드입니다. 오류가 발생하지는 않지만 실제로는 아무 것도 작동하지 않습니다.어떤 도움이든 대단히 감사합니다!
Option Explicit
Dim ws As Worksheet, a As Range
Sub forEachWs()
For Each ws In ActiveWorkbook.Worksheets
Call resizingColumns
Next
End Sub
Sub resizingColumns()
Range("A:A").ColumnWidth = 20.14
Range("B:B").ColumnWidth = 9.71
Range("C:C").ColumnWidth = 35.86
Range("D:D").ColumnWidth = 30.57
Range("E:E").ColumnWidth = 23.57
Range("F:F").ColumnWidth = 21.43
Range("G:G").ColumnWidth = 18.43
Range("H:H").ColumnWidth = 23.86
Range("i:I").ColumnWidth = 27.43
Range("J:J").ColumnWidth = 36.71
Range("K:K").ColumnWidth = 30.29
Range("L:L").ColumnWidth = 31.14
Range("M:M").ColumnWidth = 31
Range("N:N").ColumnWidth = 41.14
Range("O:O").ColumnWidth = 33.86
End Sub
코드를 약간 수정합니다.
Sub forEachWs()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
Call resizingColumns(ws)
Next
End Sub
Sub resizingColumns(ws As Worksheet)
With ws
.Range("A:A").ColumnWidth = 20.14
.Range("B:B").ColumnWidth = 9.71
.Range("C:C").ColumnWidth = 35.86
.Range("D:D").ColumnWidth = 30.57
.Range("E:E").ColumnWidth = 23.57
.Range("F:F").ColumnWidth = 21.43
.Range("G:G").ColumnWidth = 18.43
.Range("H:H").ColumnWidth = 23.86
.Range("i:I").ColumnWidth = 27.43
.Range("J:J").ColumnWidth = 36.71
.Range("K:K").ColumnWidth = 30.29
.Range("L:L").ColumnWidth = 31.14
.Range("M:M").ColumnWidth = 31
.Range("N:N").ColumnWidth = 41.14
.Range("O:O").ColumnWidth = 33.86
End With
End Sub
메모,resizingColumns
루틴에서는 범위가 속하는 모수 - 워크시트를 사용합니다.
기본적으로, 사용할 때Range("O:O")
ActiveSheet에서 범위가 지정된 코드 연산자를 사용해야 합니다.With ws
진술하고 나서.Range("O:O")
.
또한 글로벌 변수를 사용할 필요가 없습니다(다른 곳에서 사용하지 않는 한).
다음 코드를 사용해 보십시오.
Sub LoopOverEachColumn()
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
ResizeColumns WS
Next WS
End Sub
Private Sub ResizeColumns(WS As Worksheet)
Dim StrSize As String
Dim ColIter As Long
StrSize = "20.14;9.71;35.86;30.57;23.57;21.43;18.43;23.86;27.43;36.71;30.29;31.14;31;41.14;33.86"
For ColIter = 1 To 15
WS.Columns(ColIter).ColumnWidth = Split(StrSize, ";")(ColIter - 1)
Next ColIter
End Sub
추가 열을 원하는 경우 변경합니다.1 to 15
로.1 to X
어디에X
원하는 열의 열 인덱스이며, 원하는 열 크기를 추가합니다.StrSize
.
예를 들어, 당신이 원한다면,P:P
폭이 …인25
그냥 추가;25
로.StrSize
그리고 변화ColIter...
로.ColIter = 1 to 16
.
이게 도움이 되길 바랍니다.
아래와 같이 범위 문에 워크시트 식별자를 입력해야 합니다.
Option Explicit
Dim ws As Worksheet, a As Range
Sub forEachWs()
For Each ws In ActiveWorkbook.Worksheets
Call resizingColumns
Next
End Sub
Sub resizingColumns()
ws.Range("A:A").ColumnWidth = 20.14
ws.Range("B:B").ColumnWidth = 9.71
ws.Range("C:C").ColumnWidth = 35.86
ws.Range("D:D").ColumnWidth = 30.57
ws.Range("E:E").ColumnWidth = 23.57
ws.Range("F:F").ColumnWidth = 21.43
ws.Range("G:G").ColumnWidth = 18.43
ws.Range("H:H").ColumnWidth = 23.86
ws.Range("i:I").ColumnWidth = 27.43
ws.Range("J:J").ColumnWidth = 36.71
ws.Range("K:K").ColumnWidth = 30.29
ws.Range("L:L").ColumnWidth = 31.14
ws.Range("M:M").ColumnWidth = 31
ws.Range("N:N").ColumnWidth = 41.14
ws.Range("O:O").ColumnWidth = 33.86
End Sub
위에서 제안한 대로 모든 범위 앞에 "ws."를 추가하는 대신 "ws.activate"를 통화 앞에 추가할 수 있습니다.
작업할 워크시트로 이동합니다.
언급URL : https://stackoverflow.com/questions/21918166/excel-vba-for-each-worksheet-loop
반응형
'programing' 카테고리의 다른 글
CTE에 정의된 값 목록 작성 (0) | 2023.06.10 |
---|---|
*ngIf 값이 배열에 존재하는 경우 (0) | 2023.06.10 |
dplyr의 "이름 바꾸기" 대체 (0) | 2023.06.10 |
ViewWillDisposure:보기 컨트롤러가 팝업되는지 또는 하위 보기 컨트롤러를 표시하는지 확인합니다. (0) | 2023.06.10 |
Oracle SQL 개발자:실패 - 테스트 실패:네트워크 어댑터에서 연결을 설정할 수 없습니까? (0) | 2023.06.10 |