1.
Cells(o, 6) = Format(Val(Cells(o, 5)) * Val(Cells(o, 4)), "currency")
1권 233쪽에 보면
cells(입력행,6)=Format(Val(txt수량)* Val(txt단가),"currency") 라고 답이 되어있는데요
Cells(입력행, 6) = Format(Val(Cells(입력행, 4)) * Val(Cells(입력행, 5)), "currency")로 쓰면 안되나요??
그리고 val이게 뭔지도 궁금해요
.jpg)
그리구 섹션 18 5번 문제를 풀고 등록버튼을 누르면 데이터표 왼쪽 상단에 삼각형이 표시되는데요
뭐가 문젠지 모르겠어요
학원을 다니면서 공부했는데 학원에서는
Private Sub cmd등록_Click()
If txt제품명 = "" Then
MsgBox "제품명을 입력하시오."
ElseIf txt수량 = "" Then
MsgBox "수량을 입력하시오."
ElseIf txt단가 = "" Then
MsgBox "단가를 입력하시오."
ElseIf cmb결재형태 = "" Then
MsgBox "결재형태를 입력하시오."
Else
o = Range("b3").CurrentRegion.Rows.Count + 3
Cells(o, 2) = txt판매일자
Cells(o, 3) = txt제품명
Cells(o, 4) = txt수량
Cells(o, 5) = txt단가
Cells(o, 6) = Format(Cells(o, 5) * Cells(o, 4), "currency")
Cells(o, 7) = cmb결재형태
txt제품명 = ""
txt수량 = ""
txt단가 = ""
cmb결재형태 = ""
End If
이렇게 알려줬거든요? 좀 더 간단히 쓰는 방법이라면서..
Cells(o, 6) = Format(Cells(o, 5) * Cells(o, 4), "currency")여기에
val을 붙이던 안붙이던 결과가 같아서 혼란스러워요.. ㅠㅠ차이가 뭐죠?
o는 입력행이에요
마지막으로
6번 문제에서 조회버튼 누를때요.
제가 학원에서 배운 방법대로 하면
~~currentregion~~~~~count+3 대신 +2만 하면 되는거 아닌가요?
그랬더니 데이터표에 마지막 데이터가 지워지네요 ㅠㅠ
학원에서 책 내용을 설명 안해주어서 책에 쓰여진 참조행,입력행 이부분은 읽어도 이해가 잘 안돼요
1.정확한 값이 나온다면 상관 없을 수도 있습니다.
val은 문자로 받은 데이터을 숫자로 나타낼때 쓰이는 것입니다.
하지만 수량이나 단가는 대부분 숫자로 입력을 받습니다. 문자로 입력이 된다 하더라도 숫자의 형식을 가지고 있기 때문에 계산이 가능 합니다.
만약 val을 쓰지 않고도 계산이 가능 하다면 val을 사용 하지 않으 셔도 됩니다.
물론 사용 하셔도 되구요.
지시사항에 val를 꼭 사용 하라고 되어 있지 않고, val을 사용 하지 않아도 계산이 가능 하다면 val를 사용 하시지 않으셔도 됩니다.
2. 삼각형 부분에 커서를 놓거나 클릭하면 ! 표시가 되는데요 여기를 눌러 보시면 오류 이유가 있으니 확인 해 보세요.
보통 숫자 형식인데 문자로 입력되었거나 하였을때 표시 되는 것입니다.
3. o = Range("b3").CurrentRegion.Rows.Count + 3
은 아마도 b3에 연결된 값에 첫번째 값이 시작하는 3번째 열을 더한 것 같습니다.
시나공에서 설명한 [b3].row 를 숫자로 표시 한 것이겠죠.
[a3].row 는 a3의 행위치를 나타내므로 3이 나오구요.
[a3].currentregion.rows.count 는 a3부터 입력되어 있는 값들의 개수를 세게 됩니다.
a3부터 3줄의 데이터가 있다면 이 값은 3이 되고
3+3 이 되어 6 행이 되는 것이죠. (필드명 포함해서 입니다. 필드명부터 4줄이라면 4를 더해주셔야 합니다.)
즉 6번행부터 입력하게 합니다.
이것은 마지막 데이터 다음줄에 값을 입력 하는 입력 프로시저에 사용하는 것입니다.
참조행에서
listindex와 list,listindex의 차이점을 설명 드릴께요. 이렇게 이해하시는 것이 빠르실 거예요.
첫번째 코드는 목록상자나 콤보상자에서 특정 행을 추출할 때 사용하고, 두번째 코드는 워크시트의 셀안의 내용을 가져올때 사용 하게 됩니다.
참조행 = lst과목.ListIndex
입력행 = [a2].Row + [a2].CurrentRegion.Rows.Count
Cells(입력행, 1) = txtID
Cells(입력행, 2) = txt이름
Cells(입력행, 3) = lst과목.List(참조행, 0)
Cells(입력행, 4) = lst과목.List(참조행, 1)
Cells(입력행, 5) = lst과목.List(참조행, 2)
Cells(입력행, 6) = lst과목.List(참조행, 3) - (lst과목.List(참조행, 3) * txt할인율)
여기에서 참조행에 lst과목.listindex 라고 정의해 두고
lst과목.list(참조행,0) 으로 사용 하고 있습니다.
이것은 참조행이 어디인지 지정해 놓고 lst과목에서 참조행의 위치와 0인.. 그러니깐 참조행이 만약 2이고 찾고자하는 것이 0행에 있다는 그런 뜻이 됩니다.
참조행 = lst열차종류.listindex + 4
입력행 = [a3].row + [a3].currentregion.rows.count
cells(입력행, 1) = txt번호
cells(입력행, 2) = cells(참조행, 8)
cells(입력행, 3) = cells(참조행, 9)
cells(입력행, 4) = txt매수
cells(입력행, 5) = txt매수 * cells(참조행, 10)
이 문장에서는 lst열차종류에서 참조되는 행의 위치를 이미 지정하였습니다. 그리고 사용 할때는 8,9와 같이 엑셀에서 위치하는 열을 미리 적어 둔 것입니다.
한마디로 말하면.. 첫번째 코드는 폼안의 list박스내의 자료를 찾아서 셀에 입력 하는 것이구요. 
두번째 코드는 워크시트에서 참조표가 있는 곳의 위치를 지정하여 입력할 데이터를 확인 하는 것입니다. 

좋은 하루 되세요.
좋은 하루 되세요.
-
*2012-03-09 06:52:29
1.정확한 값이 나온다면 상관 없을 수도 있습니다.
"val은 문자로 받은 데이터을 숫자로 나타낼때 쓰이는 것입니다.
하지만 수량이나 단가는 대부분 숫자로 입력을 받습니다. 문자로 입력이 된다 하더라도 숫자의 형식을 가지고 있기 때문에 계산이 가능 합니다.
만약 val을 쓰지 않고도 계산이 가능 하다면 val을 사용 하지 않으 셔도 됩니다.
물론 사용 하셔도 되구요.
지시사항에 val를 꼭 사용 하라고 되어 있지 않고, val을 사용 하지 않아도 계산이 가능 하다면 val를 사용 하시지 않으셔도 됩니다.2. 삼각형 부분에 커서를 놓거나 클릭하면 ! 표시가 되는데요 여기를 눌러 보시면 오류 이유가 있으니 확인 해 보세요.
보통 숫자 형식인데 문자로 입력되었거나 하였을때 표시 되는 것입니다.
3. o = Range("b3").CurrentRegion.Rows.Count + 3
은 아마도 b3에 연결된 값에 첫번째 값이 시작하는 3번째 열을 더한 것 같습니다.
시나공에서 설명한 [b3].row 를 숫자로 표시 한 것이겠죠.
[a3].row 는 a3의 행위치를 나타내므로 3이 나오구요.
[a3].currentregion.rows.count 는 a3부터 입력되어 있는 값들의 개수를 세게 됩니다.
a3부터 3줄의 데이터가 있다면 이 값은 3이 되고
3+3 이 되어 6 행이 되는 것이죠. (필드명 포함해서 입니다. 필드명부터 4줄이라면 4를 더해주셔야 합니다.)
즉 6번행부터 입력하게 합니다.
이것은 마지막 데이터 다음줄에 값을 입력 하는 입력 프로시저에 사용하는 것입니다.
참조행에서
listindex와 list,listindex의 차이점을 설명 드릴께요. 이렇게 이해하시는 것이 빠르실 거예요.
첫번째 코드는 목록상자나 콤보상자에서 특정 행을 추출할 때 사용하고, 두번째 코드는 워크시트의 셀안의 내용을 가져올때 사용 하게 됩니다.
참조행 = lst과목.ListIndex
입력행 = [a2].Row + [a2].CurrentRegion.Rows.Count
Cells(입력행, 1) = txtID
Cells(입력행, 2) = txt이름
Cells(입력행, 3) = lst과목.List(참조행, 0)
Cells(입력행, 4) = lst과목.List(참조행, 1)
Cells(입력행, 5) = lst과목.List(참조행, 2)
Cells(입력행, 6) = lst과목.List(참조행, 3) - (lst과목.List(참조행, 3) * txt할인율)
여기에서 참조행에 lst과목.listindex 라고 정의해 두고
lst과목.list(참조행,0) 으로 사용 하고 있습니다.
이것은 참조행이 어디인지 지정해 놓고 lst과목에서 참조행의 위치와 0인.. 그러니깐 참조행이 만약 2이고 찾고자하는 것이 0행에 있다는 그런 뜻이 됩니다.참조행 = lst열차종류.listindex + 4
입력행 = [a3].row + [a3].currentregion.rows.countcells(입력행, 1) = txt번호
cells(입력행, 2) = cells(참조행, 8)
cells(입력행, 3) = cells(참조행, 9)
cells(입력행, 4) = txt매수
cells(입력행, 5) = txt매수 * cells(참조행, 10)이 문장에서는 lst열차종류에서 참조되는 행의 위치를 이미 지정하였습니다. 그리고 사용 할때는 8,9와 같이 엑셀에서 위치하는 열을 미리 적어 둔 것입니다.
한마디로 말하면.. 첫번째 코드는 폼안의 list박스내의 자료를 찾아서 셀에 입력 하는 것이구요.
두번째 코드는 워크시트에서 참조표가 있는 곳의 위치를 지정하여 입력할 데이터를 확인 하는 것입니다.

좋은 하루 되세요.
좋은 하루 되세요.