반응형
VBA 사용시 개인적으로 많이 사용하는 이벤트가 저장시 값을 확인해서 색상 변경 하는 것이다.
일단 전에 사용한 Excel 파일을 사용하려 한다.
2021/01/13 - [IT/엑셀(Excel)] - [Excel-VBA] 입력 받은 값으로 라인 선택하기
Visual Basic 을 실행하고 현재_통합_문서를 선택 한다.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Worksheet 선택
Dim wks As Worksheet
Set wks = Sheets("Sheet1")
Dim i, j As Integer ' for 문에 사용
Dim lastRow, lastCol As Integer '마지막 Row / column index
lastRow = wks.Range("A" & wks.Rows.Count).End(xlUp).Row 'Sheet 마지막 Row
lastCol = wks.Cells(1, Columns.Count).End(xlToLeft).Column 'Sheet 마지막 Column
Dim findIndex As Integer '찾을 헤더의 위치
Dim findColumnName As String '찾을 헤더 문구
findColumnName = "F1"
Dim findString As String '색상 변경할 문구
findString = "F23"
Dim iColor As Integer 'Row 색상
iColor = 2
With wks
For i = 1 To lastRow
iColor = 2
' 첫번째 Row 헤더 일때만 찾는다.
If i = 1 Then
For j = 1 To lastCol
'헤더(첫번째컬럼) 에 "F1" 을 찾는다.
If .Cells(i, j) = findColumnName Then
'헤더(첫번째컬럼) 이 "F1" 일 경우 column index 를 저장 한다.
findIndex = j
Exit For
End If
Next j
End If
If findIndex = 0 Then
MsgBox ("찾는 컬럼이 없습니다")
Exit Sub
End If
If .Cells(i, findIndex) = findString Then
iColor = 3
End If
.Range(Cells(i, 1), Cells(i, lastCol)).Interior.ColorIndex = iColor '해당 라인의 사용 중 컬럼까지 색상
'.Rows(i).Interior.ColorIndex = iColor ' 라인 전체 색상
'.Cells(i, findIndex).Interior.ColorIndex = iColor ' 해당 컬럼만
Next i
End With
End Sub
반응형
'IT > 엑셀(Excel)' 카테고리의 다른 글
[Excel] Cell에 Drop-Down List(Combobox) List 넣기 (0) | 2021.02.04 |
---|---|
[Excel-VBA] Cell 색상 설정 - ColorIndex, RGB (0) | 2021.01.29 |
[Excel-VBA] 입력 받은 값으로 라인 선택하기 (0) | 2021.01.13 |
Excel 셀의 눈금선 안보이게 (0) | 2020.06.22 |
[IT 정보] csv를 excel로 변환시 숫자의 지수 표현방식(예 : 123E2) 방지 (0) | 2020.06.04 |