엑셀에서 listindex 사용할때
기본모의고사3 4-2
If txt년도 = "" Then
MsgBox "정산년도를 입력하세요"
ElseIf txt고객 = "" Then
MsgBox "고객명을 입력하세요"
ElseIf cmb코드 = "" Then
MsgBox "등급코드를 선택하세요"
Else
참조행 = cmb코드.ListIndex + 4
입력행 = [a3].Row + [a3].CurrentRegion.Rows.Count
Cells(입력행, 1) = txt고객
Cells(입력행, 2) = cmb코드
Cells(입력행, 3) = Cells(참조행, 8)
Cells(입력행, 4) = Cells(참조행, 9)
Cells(입력행, 5) = Cells(참조행, 10)
End If
기본모의고사4 4-2
If IsNull(lst열차종류.Value) Then
txt번호 = "선택안함"
lst열차종류.ListIndex = 0
Else
참조행 = lst열차종류.ListIndex
입력행 = [a3].Row + [a3].CurrentRegion.Rows.Count
Cells(입력행, 1) = 입력행 - 3 & "-" & UCase(txt번호)
Cells(입력행, 2) = lst열차종류.List(참조행, 0)
Cells(입력행, 3) = lst열차종류.List(참조행, 1)
Cells(입력행, 4) = Val(txt매수)
Cells(입력행, 5) = lst열차종류.List(참조행, 2) * txt매수
End If
1.어는곳은 +4 를 하고 어느곳은 + 안하는 이유가 뭔가요?
실제데이터 위치를 입력하는거 아닌가요?
2.파란부분은 뭘보고 입력하나요 ? 정확히 알고 싶네요
3.오렌지색 문장에 대해 설명좀 부탁합니다
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박스내의 자료를 찾아서 셀에 입력 하는 것이구요.
.png)
두번째 코드는 워크시트에서 참조표가 있는 곳의 위치를 지정하여 입력할 데이터를 확인 하는 것입니다.

2. lst, cmb 는 컨트롤 이름입니다.
프로시저 창에서 폼의 컨트롤 이름을 확인 해 보세요.
3.
문제에서 lst과목을 선택하지 않았을때 메시지를 나타내라고 했으므로 이 컨트롤에 값이 입력되었는지 안되었는지를 확인 하기 위해
isnull 을 사용하는 것입니다.
If IsNull(lst과목.value) Then는 lst과목 컨트롤에 선택된 값이 있는지 없는지를 비교하는 것입니다.
isnull 은 컨트롤에 선택된 값이 없는지 확인 하는 것입니다.
액세스는 txt이름을 참조했을 때는 단순한 컨트롤이 아니라 바운드된 필드를 찾게 됩니다.
그래서 필드의 초기값은 Null이므로 값을 입력하지 않은 것은 IsNull로 검사하는게 맞습니다.
엑셀에서 텍스트박스 컨트롤에 등록된 내용을 바로 확인 하기 때문에 cmb제품명 = "" 와 같이 사용하는 것입니다.
lst 박스부분에서는 바운드된 값을 이용하기때문에 isnull을 사용하는 경우가 많구요.
어떻게 작성하시든 코드가 정상실행되어 정확한 결과가 나온다면 상관 없습니다.
ucase는 대문자로 표시하라는 함수이고 LCASE는 소문자로 나타내는 함수입니다.
좋은 하루 되세요.
-
*2018-03-12 16:29:22
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박스내의 자료를 찾아서 셀에 입력 하는 것이구요.
.png)
두번째 코드는 워크시트에서 참조표가 있는 곳의 위치를 지정하여 입력할 데이터를 확인 하는 것입니다.
2. lst, cmb 는 컨트롤 이름입니다.
프로시저 창에서 폼의 컨트롤 이름을 확인 해 보세요.
3.
문제에서 lst과목을 선택하지 않았을때 메시지를 나타내라고 했으므로 이 컨트롤에 값이 입력되었는지 안되었는지를 확인 하기 위해
isnull 을 사용하는 것입니다.
If IsNull(lst과목.value) Then는 lst과목 컨트롤에 선택된 값이 있는지 없는지를 비교하는 것입니다.
isnull 은 컨트롤에 선택된 값이 없는지 확인 하는 것입니다.
액세스는 txt이름을 참조했을 때는 단순한 컨트롤이 아니라 바운드된 필드를 찾게 됩니다.
그래서 필드의 초기값은 Null이므로 값을 입력하지 않은 것은 IsNull로 검사하는게 맞습니다.
엑셀에서 텍스트박스 컨트롤에 등록된 내용을 바로 확인 하기 때문에 cmb제품명 = "" 와 같이 사용하는 것입니다.
lst 박스부분에서는 바운드된 값을 이용하기때문에 isnull을 사용하는 경우가 많구요.
어떻게 작성하시든 코드가 정상실행되어 정확한 결과가 나온다면 상관 없습니다.
ucase는 대문자로 표시하라는 함수이고 LCASE는 소문자로 나타내는 함수입니다.
좋은 하루 되세요.