'대소문자'에 해당되는 글 1건
- 2018.04.10 VBA를 이용하여 엑셀의 선택 셀에 대한 대소문자 변경
VBA를 이용하여 엑셀의 선택 셀에 대한 대소문자 변경
MS 사이트에 있는 코드 긁어와서 한글 설명만 붙임
Sub ToggleCaseMacro(),
Dim CaseRange As Range,
Dim CalcMode As Long,
Dim cell As Range,
,
On Error Resume Next,
' 선택한 영역(셀이 하나 이상일 수 있음!)에 Text셀이 존재하는지 여부를 검사하는 함수,
' 선택영역과 선택영역의 Text셀이 중복되면 해당 영역을 반환. 없으면 Nothing 처리,
Set CaseRange = Intersect(Selection, _,
Selection.Cells.SpecialCells(xlCellTypeConstants, xlTextValues)),
,
' 일단 Error 무시,
On Error GoTo 0,
If CaseRange Is Nothing Then Exit Sub,
,
' 화면 갱신을 막아줌,
With Application,
CalcMode = .Calculation,
.Calculation = xlCalculationManual,
.ScreenUpdating = False,
.EnableEvents = False,
End With,
,
,
' 셀이 하나 이상일 수 있으니 모든 셀에 대해서 대문자면 소문자로, 소문자면 적절하게 변경하고 그 외의 경우는 대문자 처리함,
For Each cell In CaseRange.Cells,
Select Case cell.Value,
Case UCase(cell.Value): cell.Value = LCase(cell.Value),
Case LCase(cell.Value): cell.Value = StrConv(cell.Value, vbProperCase),
Case Else: cell.Value = UCase(cell.Value),
End Select,
Next cell,
,
,
' 화면 갱신을 다시 진행,
' 이렇게 해야 화면에 변화하는게 안보이고 한번에 변경된거 같으면서 속도도 빠름,
' 의외로 새로 그리기 속도가 꽤 느리기 때문에 위의 갱신 막는것과 함께 같이 항상 써줘야 함,
With Application,
.ScreenUpdating = True,
.EnableEvents = True,
.Calculation = CalcMode,
End With,
End Sub