엑셀 VBA 0입력 관련 도와주세요

VBA
작성자
작성일
2024-03-06 23:08
조회
370
엑셀버전 : M365

운영체제 : Mac OS

질문 요약 : 0입력 시에도 코드 진행

밑에 있는 코드를 만들었습니다.

제가 해결하고 싶은 것은, 입력란에 0을 입력하면 취소되는 것이 아닌 0인 채로 코드가 진행됬으면 좋겠습니다.

0을 입력하면 자꾸 코드가 취쇠되네요

 

 

Sub GenerateTest()

    Dim wsDB As Worksheet

    Dim wsTest As Worksheet

    Dim i As Long, j As Long

    Dim KR_to_EN_단어_갯수 As Variant

    Dim EN_to_KR_단어_갯수 As Variant

    Dim totalWords As Long

    Dim wordArray() As Variant

    Dim temp As Variant

    Dim availableWords As Long

    Dim foundCell As Range

    Dim inputCell As Range

    Dim copyRange As Range

    Dim targetRange As Range

    

    ActiveWorkbook.RefreshAll

    ' 단어 데이터베이스 시트와 시험지 시트를 지정합니다.

    Set wsDB = ThisWorkbook.Sheets("단어DB")

    Set wsTest = ThisWorkbook.Sheets("시험지")

    

    ' KR_to_EN_단어_갯수 입력을 반복하여 유효한 값이 입력될 때까지 요청합니다.

    Do

        ' KR_to_EN_단어_갯수를 입력 받습니다.

        KR_to_EN_단어_갯수 = Application.InputBox("영어를 한국어로 번역할 개수를 입력하세요.", "영어 to 한국어", 0, Type:=1)

        

        ' 숫자가 아닌 값을 입력하면 메시지를 표시하고 다시 입력을 요청합니다.

        If KR_to_EN_단어_갯수 = False Then Exit Sub

        If Not IsNumeric(KR_to_EN_단어_갯수) Then

            MsgBox "숫자를 입력하십시오.", vbExclamation

        ElseIf KR_to_EN_단어_갯수 < 0 Then

            MsgBox "0 이상의 숫자를 입력하십시오.", vbExclamation

        Else

            Exit Do

        End If

    Loop Until KR_to_EN_단어_갯수 >= 0

    

    ' EN_to_KR_단어_갯수 입력을 반복하여 유효한 값이 입력될 때까지 요청합니다.

    Do

        ' EN_to_KR_단어_갯수를 입력 받습니다.

        EN_to_KR_단어_갯수 = Application.InputBox("한국어를 영어로 번역할 개수를 입력하세요.", "한국어 to 영어", 0, Type:=1)

        

        ' 숫자가 아닌 값을 입력하면 메시지를 표시하고 다시 입력을 요청합니다.

        If EN_to_KR_단어_갯수 = False Then Exit Sub

        If Not IsNumeric(EN_to_KR_단어_갯수) Then

            MsgBox "숫자를 입력하십시오.", vbExclamation

        ElseIf EN_to_KR_단어_갯수 < 0 Then

            MsgBox "0 이상의 숫자를 입력하십시오.", vbExclamation

        Else

            Exit Do

        End If

    Loop Until EN_to_KR_단어_갯수 >= 0

    

    ' 합친 값을 사용하여 단어를 가져옵니다.

    totalWords = KR_to_EN_단어_갯수 + EN_to_KR_단어_갯수

    

    ' 사용 가능한 단어 수를 계산합니다.

    availableWords = wsDB.Cells(wsDB.Rows.Count, "BB").End(xlUp).Row - 5

    

    ' 입력된 값과 사용 가능한 단어 수 중 작은 값을 사용합니다.

    totalWords = WorksheetFunction.Min(totalWords, availableWords)

    

    ' 사용 가능한 단어 목록을 배열에 저장합니다.

    ReDim wordArray(1 To totalWords)

    For i = 1 To totalWords

        wordArray(i) = wsDB.Cells(5 + i, "BB").Value

    Next i

    

    ' 배열에 저장된 단어를 랜덤으로 섞습니다.

    For i = 1 To totalWords

        j = Int((totalWords - i + 1) * Rnd + i)

        temp = wordArray(i)

        wordArray(i) = wordArray(j)

        wordArray(j) = temp

    Next i

    

    ' '시험지' 시트의 7행부터 아래로 모든 데이터를 지웁니다.

    wsTest.Rows("7:" & wsTest.Rows.Count).EntireRow.Clear

    

    ' 랜덤으로 섞은 배열의 값을 시험지 시트의 H7부터 써줍니다.

    For i = 1 To totalWords

        wsTest.Cells(i + 6, "H").Value = wordArray(i)

    Next i

    

    ' '단어DB' 시트에서 해당 단어의 한국어 뜻을 찾아서 '시험지' 시트의 I열에 입력합니다.

    For i = 7 To totalWords + 6

        Set foundCell = wsDB.Columns("E:E").Find(wsTest.Cells(i, "H").Value, LookIn:=xlValues, LookAt:=xlWhole)

        If Not foundCell Is Nothing Then

            wsTest.Cells(i, "I").Value = foundCell.Offset(0, 1).Value

        End If

    Next i

    

    ' '단어DB' 시트에서 해당 단어의 영어 번역을 찾아서 '시험지' 시트의 J열에 입력합니다.

    For i = 7 To totalWords + 6

        Set foundCell = wsDB.Columns("C:C").Find(wsTest.Cells(i, "H").Value, LookIn:=xlValues, LookAt:=xlWhole)

        If Not foundCell Is Nothing Then

            wsTest.Cells(i, "J").Value = foundCell.Offset(0, 1).Value

        End If

    Next i

    

    ' '시험지' 시트의 H7부터 KR to EN의 값만큼 복사해서 D7부터 아래로 붙여넣습니다.

    If KR_to_EN_단어_갯수 > 0 Then

        Set copyRange = wsTest.Range(wsTest.Cells(7, "H"), wsTest.Cells(6 + KR_to_EN_단어_갯수, "H"))

        Set targetRange = wsTest.Range("D7").Resize(copyRange.Rows.Count, 1)

        copyRange.Copy targetRange

    End If

    ' '시험지' 시트의 I열에서 6 + KR to EN 인수 값만큼 아래로 이동하여 데이터를 복사하고 E열의 적절한 위치에 붙여넣습니다.

    If EN_to_KR_단어_갯수 > 0 Then

        Set copyRange = wsTest.Range(wsTest.Cells(6 + KR_to_EN_단어_갯수 + 1, "I"), wsTest.Cells(wsTest.Rows.Count, "I").End(xlUp))

        Set targetRange = wsTest.Cells(6 + KR_to_EN_단어_갯수 + 1, "E")

        copyRange.Copy targetRange

    End If

    

    ' 셀 서식 적용

    With wsTest.Range("D7:E" & totalWords + 6)

        .Font.Size = 16

        .HorizontalAlignment = xlCenter

        .WrapText = True

        .Borders.LineStyle = xlContinuous

    End With

    

    With wsTest.Range("H7:I" & totalWords + 6)

        .Font.Size = 16

        .HorizontalAlignment = xlCenter

        .WrapText = True

        .Borders.LineStyle = xlContinuous

    End With

    

    ' 프린트 A4 용지에 맞추기

    With wsTest.PageSetup

        .PaperSize = xlPaperA4

        .Orientation = xlPortrait

        .Zoom = False

        .FitToPagesWide = 1

        .FitToPagesTall = False

    End With

End Sub

신고
스크랩
공유
전체 2

  • 2024-03-07 01:14

    @준 님 이렇게 수정해보세요.

    그런데 실제로 오류 처리로 인해 FALSE인 경우는 없는 것 같습니다.

    If KR_to_EN_단어_갯수 = False And KR_to_EN_단어_갯수 <> 0 Then Exit Sub


  • 2024-03-08 06:49

    @준 님 입력값을 Variant가 아닌 String변수로 받으세요.

    그리고 Trim해서 ""이면 중단

    IsNumeric이 아니어도 중단

    통과하면 실제사용할 변수에 Clng으로 대입


전체 16,940
번호 카테고리 제목 작성자 작성일 추천 조회
알림
[📚진짜쓰는 실무엑셀] 2024년 엑셀 공부, 이 책 한권으로 마스터하세요! (291)
오빠두엑셀 | 2022.02.03 | 추천 554 | 조회 846496
오빠두엑셀 2022.02.03 554 846496
공지사항 문서서식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (197)
오빠두엑셀 | 2021.10.28 | 추천 304 | 조회 31519
오빠두엑셀 2021.10.28 304 31519
74633 문서서식
New 안녕하세요 게임 시스템 테이블 작성 배우고 있는데 기초적인 부분을 잘 모르겠어서 질문 드립니다! 첨부파일
코니 | 20:19 | 추천 0 | 조회 2
코니 20:19 - 2
74632 기능/도구
New 챗gpt 연동해서 이미지로 된 표의 데이터를 가져오려고 합니다.
김수현 | 19:16 | 추천 0 | 조회 21
김수현 19:16 - 21
74628 구글시트
New IMPORTRANGE 함수에서 칸을 늘리면 사라지는데 고정하는 방법은 없을까요? (3)
야망이 | 17:36 | 추천 0 | 조회 34
야망이 17:36 - 34
74627 문서서식
New 조건부 서식 문의 엑셀파일첨부파일 (1)
배고픈짐승 | 15:44 | 추천 0 | 조회 55
배고픈짐승 15:44 - 55
74626 파워쿼리/피벗
New [파워쿼리] 여러 파일 한번에 불러올 때 데이터 유실 첨부파일 (3)
naa**** | 14:40 | 추천 0 | 조회 51
naa**** 14:40 - 51
74625 VBA
New 시트이동시 유저폼 실행방법 문의 (2) 답변완료
땡이 | 14:36 | 추천 0 | 조회 48
땡이 14:36 - 48
74621 기능/도구
New 4개의 열 에서 같은 이름 가로로 정렬 (3)
Bukonge | 12:36 | 추천 0 | 조회 55
Bukonge 12:36 - 55
74618 VBA
New 유저폼에 바코드스캔시 입력속도 개선방법? (5) 답변완료
땡이 | 11:36 | 추천 0 | 조회 51
땡이 11:36 - 51
74616 함수/공식
New Rawdata 첨부파일 (4)
HIHUGO | 10:48 | 추천 0 | 조회 62
HIHUGO 10:48 - 62
74604 문서서식
New 간트차트 조건부서식 이용 문의 엑셀파일첨부파일 (3)
배고픈짐승 | 2024.10.30 | 추천 0 | 조회 77
배고픈짐승 2024.10.30 - 77
74599 함수/공식
New 이런 경우에는 무슨 함수를 써야할까요..? (2)
iwnqn | 2024.10.30 | 추천 0 | 조회 97
iwnqn 2024.10.30 - 97
74598 문서서식
New 엑셀 유효성 검사 뛰어 쓰기 문제 엑셀파일 (2) 답변완료
퉁퉁이 | 2024.10.30 | 추천 0 | 조회 68
퉁퉁이 2024.10.30 - 68
74592 함수/공식
New 여러 값들 중에서 원하는 값을 찾고 싶어요 도와주세요! 첨부파일 (9) 답변완료
저도해볼게요 | 2024.10.30 | 추천 0 | 조회 99
저도해볼게요 2024.10.30 - 99
74589 구글시트
New 한셀에 줄바꿈으로 있는 여러데이터를 한셀에 한데이터 들어가게끔 일괄로 하고 싶습니다 첨부파일 (4) 답변완료
스톤스톤 | 2024.10.30 | 추천 0 | 조회 60
스톤스톤 2024.10.30 - 60
74585 VBA
New UserForm 크기질문 첨부파일 (5)
땡이 | 2024.10.30 | 추천 0 | 조회 72
땡이 2024.10.30 - 72
74583 함수/공식
New XLOOKUP 함수의 다중조건을 잘 모르겠습니다 첨부파일 (6)
qlcc**** | 2024.10.30 | 추천 0 | 조회 87
qlcc**** 2024.10.30 - 87
74582 함수/공식
New filter 함수에 대해 문의드립니다 (5)
김은상 | 2024.10.30 | 추천 0 | 조회 70
김은상 2024.10.30 - 70
74581 구글시트
New 구글폼 견적서 자동화 관련, 폼에서 입력된 이미지 파일을 견적서에 넣는 방법 좀 알려주시면 감사하겠습니다.
| 2024.10.30 | 추천 0 | 조회 56
2024.10.30 - 56
74572 차트/그래프
New 꺽은선 그래프의 레이블이 원복이 됩니다. 첨부파일 (3)
구리구리이 | 2024.10.30 | 추천 0 | 조회 62
구리구리이 2024.10.30 - 62
74570 함수/공식
New 배수 금액으로 순번 정하기 알려 주세요...ㅠ 엑셀파일첨부파일 (3) 답변완료
서기 | 2024.10.30 | 추천 0 | 조회 59
서기 2024.10.30 - 59
74566 함수/공식
New 두개의 열에 입력된 데이터를 순서 바꿔서 입력으로 중복일 때 골라내는 법 엑셀파일첨부파일 (1) 답변완료
문과적남자 | 2024.10.30 | 추천 0 | 조회 60
문과적남자 2024.10.30 - 60
74564 함수/공식
New 각 열별로 합 구하는 방법 첨부파일 (2) 답변완료
라핼 | 2024.10.30 | 추천 0 | 조회 78
라핼 2024.10.30 - 78
74563 함수/공식
New 필터 적용시 중복값 제외 카운트 되는 법 좀 알려주세요 ㅠㅠ 첨부파일 (1)
정재욱 | 2024.10.30 | 추천 0 | 조회 73
정재욱 2024.10.30 - 73
74558 함수/공식
New 문자와 숫자가 섞여있는 열의 합계와 평균을 구하는 방법을 알려주세요!! 첨부파일 (9)
침착해 | 2024.10.30 | 추천 0 | 조회 79
침착해 2024.10.30 - 79
74556 함수/공식
New 세트상품 마진율 구하기 (2)
ek02 | 2024.10.30 | 추천 0 | 조회 65
ek02 2024.10.30 - 65
74543 기능/도구
New 문자와 숫자 혼합된 셀에서 숫자만 따로 따올수 있는 기능이 있을까요? 첨부파일 (4)
야만용사 | 2024.10.29 | 추천 0 | 조회 99
야만용사 2024.10.29 - 99
74542 기능/도구
New 엑셀 백분율 숫자로변경 (3)
rarara | 2024.10.29 | 추천 0 | 조회 90
rarara 2024.10.29 - 90
74540 함수/공식
New ★데이터 가공★ 잘못된 데이터를 올바른 데이터로 변환하는 과정을 도와주세요 ㅠㅠ 엑셀파일첨부파일 (11)
| 2024.10.29 | 추천 0 | 조회 131
2024.10.29 - 131
74539 함수/공식
New 안녕하세요 INDEX, MATCH 다중조건 질문드립니다! 엑셀파일 (3)
gys**** | 2024.10.29 | 추천 0 | 조회 97
gys**** 2024.10.29 - 97
74533 함수/공식
New 산출집계시트에 항목을 산출서에서 가져오고싶어요 엑셀파일 (3)
Moto | 2024.10.29 | 추천 0 | 조회 91
Moto 2024.10.29 - 91