오빠두님 엑셀기초입문강의 11강 VBA코드관련 질문입니다.

VBA
작성자
프란츠
작성일
2022-06-22 12:37
조회
57
엑셀버전 : 엑셀2016

운영체제 : 윈도우10


노가다 간편화를 위해 오빠두님 강의 보면서 기초부터 엑셀공부하려고 하는데 강의에서 갑자기 VBA코드가 나와서 궁금한점 질문드립니다.

 

이 코드에서

Code시작

Dim rng As Range
Set ws = ActiveSheet

' 변환 할 숫자 서식을 입력하세요.
Const sDate As String = "yyyy-mm-dd" '날짜 예: "mm월dd일"
Const sPercent As String = "0%" '퍼센트
Const sNumber As String = "General" '기본 숫자 예: "[Red]+0.0;[Blue]-0.0;0;@"

' 매크로
For Each rng In ws.UsedRange
If IsNumeric(rng.Value) Then <=if문 첫번째
If InStr(1, rng.Value, "%") Then rng.NumberFormat = sPercent Else rng.NumberFormat = sNumber <=if문 두번째
ElseIf IsDate(rng.Value) Then rng.NumberFormat = sDate
Else: rng.NumberFormat = "General" <=Else: (구문에 콜론을 붙이는 방법은 처음 봤습니다.) (질문3)
End If <=end if문 하나만 있습니다. (질문1)
rng.Value = rng.Value <= 동일한 값을 굳이 한번더 입력하는 이유를 모르겠습니다. (질문2)
Next

'완료 메시지 출력
MsgBox "숫자 변환이 완료되었습니다."

End Sub

Code끝

질문1. If ~ then ~ end if문이라고 알고 있는데 여기에서 end if 하나만 있는데 오류가 나지 않는 이유가 궁금합니다.

질문2. rng.value = rng.value는 동일한 값의 반복인데 코드를 적은 이유가 궁금합니다.

질문3. Else:가 그냥 Else로 하는 것이랑 다른점이 무엇인지 궁금합니다. 

 

초보라 질문이 많네요 ^^; 혹시 아시는 분은 답변 주시면 감사하겠습니다.

전체 4

  • 2022-06-22 17:48
    채택된 답변

    @프란츠 님 질문1 if문 두번째는 한줄로 끝납니다

    If InStr(1, rng.Value, "%") Then rng.NumberFormat = sPercent Else rng.NumberFormat = sNumber <=if문 두번째

    질문2

    다른 이유가 있을 것 같은데.. 해당 코드는 지워도 잘 동작할 것 같습니다 아마 테스트하다가 못 지우신 것 같습니다

    질문3

    뒤에 콜론을 추가하면 줄바꿈 하지 않고 코드를 한줄에 이어서 작성할 수 있습니다

     

     


    • 2022-06-22 20:06

      @더블유에이 님 상세한 답변 감사합니다. 질문1,3해결에 큰 도움을 받았습니다.

      구글링 더 해보니깐 https://stackoverflow.com/questions/37564915/if-then-else-excel-vba-end-if-needed

      if then else를 한 줄로 작성하면 end if 안써도 문제 없는 경우라고 나오네요. 사소하지만 어렵네요.


  • 2022-06-22 18:38

    @프란츠 님 (답변2)  range("A1") = range("A1")은 잘 실행되지만... range("a1:a2") = range("a1:a2")는 해당범위의 값이던 수식이던 해당영역이 빈셀이 되어 버립니다.. range("a1:a2") = range("a1:a2").VALUE 해줘야 제대로 값으로 변환됩니다.

     


    • 2022-06-22 20:10

      @마법의손 님 값을 입력한다는 개념으로 생각해야 되는 건가요. 감사합니다!


전체 6,909
번호 카테고리 제목 작성자 작성일 추천 조회
알림
📌 -- VBA 기초-활용 4주 완성, 특별 스터디 모집을 시작합니다! (모집 마감) -- 📌 (99)
오빠두엑셀 | 2022.06.23 | 추천 144 | 조회 17878
오빠두엑셀 2022.06.23 144 17878
공지사항 함수/공식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (79)
오빠두엑셀 | 2021.10.28 | 추천 98 | 조회 5357
오빠두엑셀 2021.10.28 98 5357
39115 함수/공식
New 중복값 강조 또는 함수를 이용한 원하는 항목 찾기 문의 엑셀파일첨부파일
이선홍 | 10:40 | 추천 0 | 조회 1
이선홍 10:40 0 1
39113 문서서식
New 데이터가 있음에도 불구하고 필터에 아무것도 안잡히는 경우 질문드립니다. 엑셀파일첨부파일
다뿡이 | 10:37 | 추천 0 | 조회 1
다뿡이 10:37 0 1
39111 차트/그래프
New 간단한 그래프 만드려고 하는데 조언 부탁드리겠습니다. 엑셀파일첨부파일
이선홍 | 10:24 | 추천 0 | 조회 4
이선홍 10:24 0 4
39110 VBA
New VBA 파일 유효기간이 지나면 읽기전용으로 하고싶어요!
꽁지 | 10:05 | 추천 0 | 조회 7
꽁지 10:05 0 7
39103 VBA
New 특정 셀에 특정 값을 입력하면 msgbox 띄우기 (매크로 트리거) (1)
509 | 01:45 | 추천 0 | 조회 23
509 01:45 0 23
39097 VBA
New Worksheet_Change 기능을 Module 에서 다루기 (3)
유지니_ | 2022.07.06 | 추천 0 | 조회 36
유지니_ 2022.07.06 0 36
39093 함수/공식
New 쉼표로 구분된 단어 끊는 방법좀 알려주세요! 부탁드립니다 첨부파일 (2) 답변완료
YJ | 2022.07.06 | 추천 0 | 조회 27
YJ 2022.07.06 0 27
39092 함수/공식
New 정렬 기능 대신 3가지 순서로 RANK 매기기 엑셀파일 (2)
블링블링 | 2022.07.06 | 추천 0 | 조회 24
블링블링 2022.07.06 0 24
39082 함수/공식
New RANK와 RANK.EQ 함수 문의 엑셀파일 (2) 답변완료
블링블링 | 2022.07.06 | 추천 0 | 조회 17
블링블링 2022.07.06 0 17
39075 파워쿼리/피벗
New 파워쿼리 새로고침시 개인정보수준이라는 팝업이 뜨면서 에러가 납니다. 첨부파일
만땅 | 2022.07.06 | 추천 0 | 조회 20
만땅 2022.07.06 0 20
39072 함수/공식
New 숙박일수 계산 추가질문드립니다. 엑셀파일 (1)
두키림 | 2022.07.06 | 추천 0 | 조회 27
두키림 2022.07.06 0 27
39071 함수/공식
New 상태표시줄 관련 첨부파일 (2) 답변완료
선크 | 2022.07.06 | 추천 0 | 조회 27
선크 2022.07.06 0 27
39070 함수/공식
New 함수? 사용해서 1시트의 내용을 2시트에 표시하는 방법좀 알려주세요 엑셀파일 (3)
지펴린 | 2022.07.06 | 추천 0 | 조회 27
지펴린 2022.07.06 0 27
39062 VBA
New 고급필터를 사용하여 추출한 데이터를 수정하면 원본 데이터 시트에서 수정되는 코드 해석 부탁드립니다 엑셀파일 (1)
호랑이파워 | 2022.07.06 | 추천 0 | 조회 39
호랑이파워 2022.07.06 0 39
39059 차트/그래프
New 슬라이서 다중 연동하여 원형차트 시 적용되지 않는 문제 엑셀파일
지둥이 | 2022.07.06 | 추천 1 | 조회 12
지둥이 2022.07.06 1 12
39052 VBA
New 파일 삭제 매크로가 한쪽 문구에서만 작동을 합니다. 첨부파일 (1)
빼갈 | 2022.07.06 | 추천 0 | 조회 23
빼갈 2022.07.06 0 23
39044 VBA
New 사용자정의함수를 다른PC에 적용 (2) 답변완료
siempre | 2022.07.06 | 추천 0 | 조회 34
siempre 2022.07.06 0 34
39034 VBA
New 자동화 프로그램 항목 추가 관련
유라 | 2022.07.06 | 추천 0 | 조회 42
유라 2022.07.06 0 42
39032 VBA
New VBA 고급자동필터 활용 조건 값이 비워 있을 때 결과 값도 안 나오게 하는 방범 문의 합니다. 첨부파일 (4) 답변완료
파란맥 | 2022.07.06 | 추천 0 | 조회 33
파란맥 2022.07.06 0 33
39019 함수/공식
New 엑셀 수식시 범위부분이 절대값이 안되요 첨부파일 (4)
skih**** | 2022.07.05 | 추천 0 | 조회 33
skih**** 2022.07.05 0 33
39016 함수/공식
New vlookup으로 가져온 알파벳을 특정숫자로 바꾸는 방법(쌩초보) (1)
방성희 | 2022.07.05 | 추천 -2 | 조회 32
방성희 2022.07.05 -2 32
39014 VBA
New 열 추가 문의 첨부파일 (2)
오대표 | 2022.07.05 | 추천 0 | 조회 34
오대표 2022.07.05 0 34
39009 함수/공식
New index,match 함수 중에서 동일한 값이 나올때 첨부파일 (2) 답변완료
최사무엘 | 2022.07.05 | 추천 0 | 조회 27
최사무엘 2022.07.05 0 27
39007 함수/공식
New VLOOKUP 조건에 맞는 것을 계속해서 나열하고 싶을 때 첨부파일 (1)
야자키겐스케 | 2022.07.05 | 추천 0 | 조회 39
야자키겐스케 2022.07.05 0 39
39003 함수/공식
New 셀에서 영어만 추출하기 엑셀파일첨부파일 (2) 답변완료
킹셀 | 2022.07.05 | 추천 0 | 조회 28
킹셀 2022.07.05 0 28
38996 VBA
New 현재 열넓이 확인후 20 더하는 방법 (1)
033cola | 2022.07.05 | 추천 0 | 조회 34
033cola 2022.07.05 0 34
38990 함수/공식
New 중복값중에 하나만 더하기 엑셀파일첨부파일 (4) 답변완료
DS | 2022.07.05 | 추천 0 | 조회 29
DS 2022.07.05 0 29
38987 함수/공식
New 행 열이 모두 숫자입니다. 첨부파일 (1)
DOUKCHEON 이재형 | 2022.07.05 | 추천 0 | 조회 28
DOUKCHEON 이재형 2022.07.05 0 28
38983 함수/공식
New 카드번호별로 시트를 만들 수 있는 방법을 알고 싶습니다! - 관련 엑셀첨부 엑셀파일첨부파일 (1)
showtime**** | 2022.07.05 | 추천 0 | 조회 47
showtime**** 2022.07.05 0 47
38982 파워쿼리/피벗
New 파워쿼리에서 영문과 숫자만 순서대로 추출 (6) 답변완료
아코니 | 2022.07.05 | 추천 0 | 조회 42
아코니 2022.07.05 0 42