엑셀 VBA 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
번호 | 카테고리 | 제목 | 작성자 | 작성일 | 추천 | 조회 |
[📚진짜쓰는 실무엑셀] 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 |
@준 님 이렇게 수정해보세요.
그런데 실제로 오류 처리로 인해 FALSE인 경우는 없는 것 같습니다.
If KR_to_EN_단어_갯수 = False And KR_to_EN_단어_갯수 <> 0 Then Exit Sub
@준 님 입력값을 Variant가 아닌 String변수로 받으세요.
그리고 Trim해서 ""이면 중단
IsNumeric이 아니어도 중단
통과하면 실제사용할 변수에 Clng으로 대입