i = [A2].CurrentRegion.Rows.Count + 2
Cells(i, 1) = txt신청자명.Value
Cells(i, 2) = txt신청일.Value
j = cmb잡지명.ListIndex
Cells(i, 3) = cmb잡지명.List(j, 0)
Cells(i, 4) = txt구독부수.Value
If opt신규.Value = True Then
Cells(i, 5) = "신규"
Else
Cells(i, 5) = "재구독"
End If
Cells(i, 6) = Cells(i, 4) * (Cells(i, 9) * 0.9)
이렇게 작성했는데 혹시 어디가 틀린지 알 수 있을까요? 결제금액이 다르게 나오네요
안녕하세요.
질문 시 정확한 교재 페이지나 회차를 언급해 주시면 정확한 답변이 가능합니다.
1. Cells(i, 9)의 값은 현재 '빈칸'입니다.
가장 큰 원인은 수식 마지막의 Cells(i, 9) 부분입니다.
문제점 : 지금 코드의 흐름을 보면 i행에 데이터를 처음으로 입력하고 있습니다. 그런데 Cells(i, 9)(i행 9열)에는 아직 아무런 값도 입력하지 않은 상태죠? 엑셀은 빈 셀을 0으로 인식하기 때문에, 부수 * (0 * 0.9)가 되어 결제금액이 0으로 나올 확률이 높습니다.
해결책 : 보통 잡지의 단가는 콤보 상자(cmb잡지명)에 함께 들어 있습니다. 콤보 상자의 두 번째 열(1번 인덱스)에 단가가 있다면 cmb잡지명.List(j, 1) 형식을 사용해야 합니다.
2. 텍스트 상자의 값은 '문자'입니다
문제점: txt구독부수.Value로 가져온 값은 숫자가 아닌 문자열(String) 형태입니다. 문자열 상태로 곱셈을 하면 엑셀이 알아서 숫자로 바꿔주기도 하지만, 안전하게 Val() 함수를 써서 숫자로 변환해 주는 것이 정석입니다.
즐거운 하루 되세요.
-
관리자2026-05-11 11:01:48
안녕하세요.
질문 시 정확한 교재 페이지나 회차를 언급해 주시면 정확한 답변이 가능합니다.
1. Cells(i, 9)의 값은 현재 '빈칸'입니다.
가장 큰 원인은 수식 마지막의 Cells(i, 9) 부분입니다.
문제점 : 지금 코드의 흐름을 보면 i행에 데이터를 처음으로 입력하고 있습니다. 그런데 Cells(i, 9)(i행 9열)에는 아직 아무런 값도 입력하지 않은 상태죠? 엑셀은 빈 셀을 0으로 인식하기 때문에, 부수 * (0 * 0.9)가 되어 결제금액이 0으로 나올 확률이 높습니다.
해결책 : 보통 잡지의 단가는 콤보 상자(cmb잡지명)에 함께 들어 있습니다. 콤보 상자의 두 번째 열(1번 인덱스)에 단가가 있다면 cmb잡지명.List(j, 1) 형식을 사용해야 합니다.
2. 텍스트 상자의 값은 '문자'입니다
문제점: txt구독부수.Value로 가져온 값은 숫자가 아닌 문자열(String) 형태입니다. 문자열 상태로 곱셈을 하면 엑셀이 알아서 숫자로 바꿔주기도 하지만, 안전하게 Val() 함수를 써서 숫자로 변환해 주는 것이 정석입니다.
즐거운 하루 되세요.