인풋박스로 유저가 시트 이름을 입력하면 해당 시트에만 특정 코드를 적용하거나 제거하기.
안녕하세요. 유튜브와 커뮤니티에서 평소 많은 도움을 받고 있음에 감사말씀드립니다.
제목에 요약한것과 같이 질문 내용이 있습니다.
원하는것은 아래의 기능을 On, off 하는 추가기능으로 만드는 것입니다.
On 추가기능
- 유저에게 적용할 시트 이름을 입력하게 한다.
- 입력된 워크시트에 아래의 코드를 적용한다.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlNone
Columns(Target.Column).Interior.ColorIndex = 19
Rows(Target.Row).Interior.ColorIndex = 24
End Sub
OFF 추가기능
- 유저에게 적용할 시트 이름을 입력하게 한다.
- 선택된 워크시트에 아래의 코드가 있으면 삭제한다.Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlNone
Columns(Target.Column).Interior.ColorIndex = 19
Rows(Target.Row).Interior.ColorIndex = 24
End Sub
위 기능을 만들고 싶어서 여러모로 고민을 해보고 있는데 현재까지는 겨우 유저가 키인한 시트를 선택하도록 하는데까지입니다.
Sub SelectSheet()
Dim ws As Worksheet
Dim sheetName As String
Dim sheetList As String
'Ask the user if they want to proceed
If MsgBox("이 매크로는 유저가 원하는 워크시트에서 선택된 셀의 행과 열의 배경색을 변경하여 강조하는 기능을 수행합니다." & vbCrLf & "계속하시겠습니까?", vbYesNo) = vbNo Then
MsgBox "실행하지 않고 종료합니다."
Exit Sub
End If
For Each ws In ThisWorkbook.Sheets
sheetList = sheetList & ws.Name & ","
Next ws
sheetList = Left(sheetList, Len(sheetList) - 1)
sheetName = ""
Do
sheetName = Application.InputBox("셀강조를 실행하려는 워크시트의 이름을 정확히 입력하세요." & vbCrLf & "띄어쓰기는 정확히 일치해야 하지만 대소문자는 일치하지 않아도 됩니다." & vbCrLf & sheetList, "Select Worksheet", Type:=2)
If sheetName = "False" Then
MsgBox "취소를 선택하였으므로, 종료합니다."
Exit Sub
End If
'Check if the sheet name exists
On Error Resume Next
ThisWorkbook.Sheets(sheetName).Select
If Err.Number <> 0 Then
MsgBox "입력하신 워크시트는 존재하지 않습니다." & vbCrLf & "띄어쓰기를 포함한 워크시트 이름을 확인하시고 다시시도하세요."
sheetName = ""
End If
On Error GoTo 0
Loop While sheetName = ""
MsgBox "다음의 워크시트에 대해 선택된 셀의 행과 열의 배경색을 변경합니다. " & sheetName
End Sub
초심자이다보니 여기까지도 많은 시간을 들여서 힘들게 왔는데 여기부터는 더 진행을 할 수가 없을 것 같습니다.
도움 주실 능력자분들을 기다리겠습니다.
감사합니다.
번호 | 카테고리 | 제목 | 작성자 | 작성일 | 추천 | 조회 |
23년 마지막, "엑셀 기초반" 챌린지! - 3주 완성 특별 스터디 모집 (~3/17(금) 까지) (39)
![]() ![]() |
![]() ![]() |
2023.03.11 | 32 | 4208 | ||
공지사항 | 공지사항 |
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐
(149)
오빠두엑셀
|
2021.10.28
|
추천 188
|
조회 10751
|
![]() ![]() |
2021.10.28 | 188 | 10751 |
53450 | VBA |
New Private Sub Workbook_Open() 자동 실행이 안됩니다
![]() ![]() |
![]() |
2023.03.25 | - | 14 |
53447 | 함수/공식 |
New 데이터 세로 쌓기를 위해서 일정량의 데이터를 반복해서 아래로 붙여 넣을 때 쓸 수 있는 팁을 좀 알려 주세요
(1)
![]() |
![]() |
2023.03.25 | - | 17 |
53434 | 함수/공식 |
New 데이터 유효성 검사에서 바이트수 제한하는 법 문의드립니다.
(2)
![]() |
![]() |
2023.03.25 | - | 26 |
53415 | 함수/공식 |
New 조건별 다른 상하한 기준 적용 함수 문의드립니다
![]() ![]() ![]() |
![]() |
2023.03.25 | - | 43 |
53409 | VBA |
New 체크박스 특정 조건에서 사용 못하게 할수 있을까요?
![]() ![]() ![]() |
![]() |
2023.03.25 | - | 36 |
53401 | 차트/그래프 |
New 표에서 원하는 부문만 뽑아내기
![]() ![]() |
![]() |
2023.03.25 | - | 42 |
53373 | 함수/공식 |
New 레시피) 재료명을 입력하면 g당 단가가 자동입력되게 하는 방법을 알고싶습니다.
![]() ![]() |
![]() |
2023.03.24 | - | 21 |
53329 | 함수/공식 |
New 마지막 숫자 삭제 방법(마지막에 숫자가 없는, 자릿수가 상이한 셀 포함의 경우)
![]() ![]() |
![]() |
2023.03.24 | - | 42 |
53325 | 함수/공식 |
New 중복된 값의 수량 합계 구간별 카운트 문의
![]() ![]() ![]() |
![]() |
2023.03.24 | - | 32 |
53321 | 구글시트 |
New 스프레드시트 다중조건 값 찾기 문의드립니다!
![]() ![]() |
![]() |
2023.03.24 | - | 30 |
53319 | 함수/공식 |
New TEXTJOIN 함수 결과 괄호로 묶는 방법
![]() ![]() ![]() |
![]() |
2023.03.24 | - | 34 |
53304 | 함수/공식 |
New 환자ID 1,2,3,4... 형식으로 변경하는 법
![]() ![]() |
![]() |
2023.03.24 | - | 30 |
53300 | 함수/공식 |
New 하나의 Sheet내 반복되는 양식에서의 함수 입력
![]() ![]() |
![]() |
2023.03.24 | - | 25 |
53297 | 함수/공식 |
New WBS에서 업무 진행률 구하는 함수
![]() ![]() ![]() |
![]() |
2023.03.24 | - | 35 |
53293 | 함수/공식 |
New 여러 행으로 작성된 조건의 월별 합을 구하고싶습니다.
![]() ![]() ![]() |
![]() |
2023.03.24 | - | 29 |
53290 | 피벗테이블 |
New 사용자 지정 목록 다른 공유자 연결 문의
![]() |
![]() |
2023.03.24 | - | 19 |
53285 | VBA |
New MousePOS As POINTAPI 오류
![]() ![]() ![]() |
![]() |
2023.03.24 | - | 27 |
53282 | 함수/공식 |
New '경력기간 구하기' 인데 어떻게 가닥을 잡아야 할지 ㅠㅠ 고수님들 도와주십시오
![]() ![]() |
![]() |
2023.03.24 | - | 50 |
53277 | 함수/공식 |
New 사이즈별 갯수 추출 문의드립니다.
![]() ![]() |
![]() |
2023.03.24 | - | 28 |
53271 | 파워쿼리/피벗 |
New 파워쿼리 #NAME? 오류
![]() ![]() |
![]() |
2023.03.24 | - | 31 |
53265 | 파워쿼리/피벗 |
New 파워쿼리를 통한 데이터 정리 질문드립니다.
(1)
![]() |
![]() |
2023.03.24 | - | 31 |
53261 | VBA |
New 발주서 작성...10년째 이러고 있습니다..ㅜㅜ
(5)
![]() |
![]() |
2023.03.24 | - | 78 |
53258 | 문서서식 |
New 사용자지정 서식 작업 후 내용 취합을 하고 싶습니다.
![]() ![]() ![]() |
![]() |
2023.03.24 | - | 34 |
53255 | 기능/도구 |
New [메모 표시/숨기기] 기능에 대한 질문입니다
![]() ![]() |
![]() |
2023.03.24 | - | 25 |
53241 | VBA |
New Application.ScreenUpdating 문 사용 관련
(2)
![]() |
![]() |
2023.03.24 | - | 28 |
53235 | VBA |
New 크롬 셀레니움 크롤링 중 HTML 스크립트 자체 텍스트 문의 건
![]() |
![]() |
2023.03.24 | - | 25 |
53231 | VBA |
New '1004' 런타임 오류가 발생하였습니다
![]() ![]() |
![]() |
2023.03.24 | - | 34 |
53207 | 기능/도구 |
New 행번호 삭제된 경우 복원 방법
![]() ![]() |
![]() |
2023.03.23 | - | 41 |
53205 | 문서서식 |
New 엑셀 왕초보 질문좀 드리겠습니다~ 한글에서 엑셀로 변환후 랜덤하게 문제 섞기
(3)
답변완료
![]() |
![]() |
2023.03.23 | - | 43 |
53199 | 함수/공식 |
New 오랫만에 질문하나올리겠습니다_서식 부분일거같긴한데요.
![]() ![]() ![]() |
![]() |
2023.03.23 | - | 40 |
@낚시하는김곰 님 와우
@낚시하는김곰 님 코드를 추가하거나 제거하는 것은 무리이므로 이벤트 진행을 하는 조건을 추가합니다.
글로벌 변수로 OnSheetName 을 선언
InputBox로 시트이름을 입력받아 저장
Workbook의 SelectionChange 이벤트에서 시트이름을 확인하고 매크로 코드 수행
[현재_통합_문서]에 아래 코드 작성
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If UCase(Sh.Name) <> OnSheetName Then Exit Sub
Sh.Cells.Interior.ColorIndex = xlNone
Sh.Columns(Target.Column).Interior.ColorIndex = 19
Sh.Rows(Target.Row).Interior.ColorIndex = 24
End Sub
일반 모듈에서 아래 코드 작성
Public OnSheetName As String
Sub SheetEnable()
Dim userInput As Variant
userInput = InputBox("적용할 시트 이름을 입력하세요." & vbNewLine & "해제하려면 빈칸으로 '확인'하세요.")
If userInput <> False Then OnSheetName = UCase(Trim(userInput))
End Sub
=> 현재 셀의 행/열 표시를 지우는 것은 더 추가하셔야 합니다.
첨부파일 : sample.xlsm
@원조백수 님 답변에 감사드립니다. 추가하고 싶은 것이 있지만 그것은 일단 도와주신 내용을 이해해보고 스스로 시도해본 후에도 답이 나오지 않는다면 다시 질문 드리겠습니다. 재질문을 드리게 된다면 그때도, 시간이 허락하신다면 도움주시기를 부탁드리며 다시 한번 감사말씀드립니다. 편한한 밤 되세요