Private Sub cmd입력_Click()
참조행 = lst품목.ListIndex
입력행 = [a1].Row + [a1].CurrentRegion.Rows.Count
End Sub
질문1. 위 코드 입력행 부분에서 [a1].Row부분은 데이터를 넣어야 할 표가 A2셀부터 시작해서 행수를 맞춰주기 위한 존재인가요? 만약에 표가 A1셀부터 시작했다면 없어도 되는 존재인지 궁금합니다.
질문2. 위 코드 입력행 부분에서 [a1].CurrentRegion.Rows.Count 부분은 [a1]셀이라는 객체가 연결되어있는 범위의 행수를 세는것인데 [a1]은 표 바깥부분인데 어떻게 표랑 연결이 되어있는 것인지 궁금합니다. 또한 Count메서드를 사용했을 경우 왜 입력되어있는 범위의 행수만 세는지도 궁금합니다.
질문3. 어차피 입력되어있는 마지막 행 아래에 새로운 데이터를 집어넣는것이라면 [a1].Row부분을 대신하여 그냥 1이나 [B1].Row를 써도 점수에 지장이 없는지 궁금합니다.
안녕하세요.
질문1. 위 코드 입력행 부분에서 [a1].Row부분은 데이터를 넣어야 할 표가 A2셀부터 시작해서 행수를 맞춰주기 위한 존재인가요? 만약에 표가 A1셀부터 시작했다면 없어도 되는 존재인지 궁금합니다.
-> 아닙니다. 있어야 합니다. 데이터를 입력해야 하는 행은 [a1].CurrentRegion.Rows.Count로 구한 값의 다음 행입니다. 그러니 [a1].Row를 지정하거나 +1을 해줘야 합니다.
질문2. 위 코드 입력행 부분에서 [a1].CurrentRegion.Rows.Count 부분은 [a1]셀이라는 객체가 연결되어있는 범위의 행수를 세는것인데 [a1]은 표 바깥부분인데 어떻게 표랑 연결이 되어있는 것인지 궁금합니다.
-> '[표1]' 이라고 쓰여 있는 부분이 데이터가 입력된 부분과 붙어 있죠? 그러므로 이것도 데이터로 인식을 하는 것입니다.
또한 Count메서드를 사용했을 경우 왜 입력되어있는 범위의 행수만 세는지도 궁금합니다.
-> [a1].CurrentRegion.Rows.Count에서 Rows가 있기때문에 행 수만 세는 것입니다.
질문3. 어차피 입력되어있는 마지막 행 아래에 새로운 데이터를 집어넣는것이라면 [a1].Row부분을 대신하여 그냥 1이나 [B1].Row를 써도 점수에 지장이 없는지 궁금합니다.
-> 지장 없습니다.
즐거운 하루 되세요.
-
관리자2020-08-07 10:09:07
안녕하세요.
질문1. 위 코드 입력행 부분에서 [a1].Row부분은 데이터를 넣어야 할 표가 A2셀부터 시작해서 행수를 맞춰주기 위한 존재인가요? 만약에 표가 A1셀부터 시작했다면 없어도 되는 존재인지 궁금합니다.
-> 아닙니다. 있어야 합니다. 데이터를 입력해야 하는 행은 [a1].CurrentRegion.Rows.Count로 구한 값의 다음 행입니다. 그러니 [a1].Row를 지정하거나 +1을 해줘야 합니다.
질문2. 위 코드 입력행 부분에서 [a1].CurrentRegion.Rows.Count 부분은 [a1]셀이라는 객체가 연결되어있는 범위의 행수를 세는것인데 [a1]은 표 바깥부분인데 어떻게 표랑 연결이 되어있는 것인지 궁금합니다.
-> '[표1]' 이라고 쓰여 있는 부분이 데이터가 입력된 부분과 붙어 있죠? 그러므로 이것도 데이터로 인식을 하는 것입니다.
또한 Count메서드를 사용했을 경우 왜 입력되어있는 범위의 행수만 세는지도 궁금합니다.
-> [a1].CurrentRegion.Rows.Count에서 Rows가 있기때문에 행 수만 세는 것입니다.
질문3. 어차피 입력되어있는 마지막 행 아래에 새로운 데이터를 집어넣는것이라면 [a1].Row부분을 대신하여 그냥 1이나 [B1].Row를 써도 점수에 지장이 없는지 궁금합니다.
-> 지장 없습니다.
즐거운 하루 되세요.
-
관리자2020-08-19 10:07:00
즐거운 하루 되세요.
컨트롤이 2차원 배열이든, 1차원 배열이든 listindex 값은 동일합니다. 첫번째 행에 있는 값을 선택하면 0, 두번째 행에 있는 값을 선택하면 1입니다. 2차원 배열에서 각각의 값을 구분할 떄는 list(행, 열)를 사용합니다.
즐거운 하루 되세요.
-
*2020-08-16 17:34:13
이전 답변에서 추가 문의드립니다.
Private Sub UserForm_Initialize()
cmb날짜.AddItem (Date - 5)
cmb날짜.AddItem (Date - 4)
cmb날짜.AddItem (Date - 3)
cmb날짜.AddItem (Date - 2)
cmb날짜.AddItem (Date - 1)
cmb날짜.AddItem (Date)
cmb문구점.RowSource = "h9:h12"
lst품목.RowSource = "i9:j12"
End Sub
이러한 초기화 상태에서 마지막 줄에 lst품목.RowSource가 2차원 배열 형식으로 2x4 형태의 목록으로 지정이 되었는데
Private Sub cmd입력_Click()
참조행 = lst품목.ListIndex
입력행 = ([a1].CurrentRegion.Rows.Count) + 1
Cells(입력행, 1) = CDate(cmb날짜)
Cells(입력행, 2) = cmb문구점
Cells(입력행, 3) = lst품목.List(참조행, 0)
Cells(입력행, 4) = lst품목.List(참조행, 1)
End Sub
입력버튼을 눌렀을 때의 코드에서 참조행이 어째서 행을 나타내는 것인지 이해가 가지 않습니다. lst품목.ListIndex를 그대로 써버리면 인덱스가
0 1
2 3
4 5
6 7 형식으로 지정되어야 하는 것이 아닌가요? Cells(입력행,3)과 Cells(입력행,4)가 설명이 조금 더 필요할 것 같습니다. 참조행 부분을 어떻게 해석해야 할지 모르겠습니다...