본문 바로가기
VBA

[VBA] PlaceHolder를 구현해보자

by 일등미노왕국 2022. 4. 27.

다른 프로젝트 진행하다가 머리식힐겸 오픈채팅방에 들어왔다가 결국 발목이 잡혔다...

웹상으로는 쉽게 구현되는데 아무리 구글링을 해도 PlaceHolder 기능은 없어서 만들어 보았다.

생각외로 완성도가 높아서 만족하고 있다.

 

규칙)

1. 초기값(성명을 입력하세요)은 옅은 색상으로 표기한다.

2. 초기값은 [성명] 영역에서 한번만 표기되어야 한다.

3. 이름값이 입력되면 진한 블랙으로 표기한다

4. 입력된 이름이 초기값으로 변경되면 안된다.

 

 

[성명을 입력하세요] 부분은 옅은 색상으로 베이스를 잡고 이름이 입력되면 색상이 변화는 조건부 서식을 주었는데 조건부 서식까진 매크로로 하는게 좀 귀찮아서 그냥 셀에다가 입혔다.

 

[성명] 이라는 이름정의로 영역을 미리 지정해 주었는데 이름정의도 은근 재미진거 같다.

 

 

그리 길지 않은 코드니까 천천히 한번 보시길 바란다.

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   
    Dim rngX As Range: Set rngX = Selection         '= 선택한 셀을 rngX로 선언
    Dim Stemp As Range                              '= 임시영역
    
    On Error Resume Next                            '= 에러가 나더라도 진행
        Set Stemp = [성명].Find("성명을 입력하세요")  '= [성명] 범위에 '성명을 입력하세요' 가 있다면
        Stemp = ""                                  '= 삭제해라
    On Error GoTo 0                                 '= 에러 검출기능 복원
    
    
    If Target.Count > 1 Then Exit Sub               '= 영역을 하나이상 잡으면 이벤트 종료
    If Intersect(rngX, [성명]) Is Nothing Then Exit Sub  '= [성명] 영역이 아니면 이벤트 종료
    Set rngX = Intersect(rngX, [성명])              '= [성명] 영역 속에 rngX가 위치한다면
    
    If rngX = "" Then                               '= rngX가 빈셀이라면
    
        rngX = "성명을 입력하세요"                    '= 초기 문자를 넣고
        rngX.Font.Color = 142770813                 '= 옅은 회색을 글자색으로 해라
    
    End If
    
End Sub

 

PlaceHolder(22.04.27).xlsm
0.02MB

댓글