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