내가, 스프레드 시트를 열고 Worksheet("Benchmarking")
로 이동시, 난 단지 드롭 다운 목록에서 하나 개의 항목을보고하고있다 데 문제 :
내가 그 항목 목록을 선택하면 실제로 웁니다
원하는 결과 :
ComboBox1_Change
이벤트가 시작된 후에뿐만 아니라 사용자가 처음 선택을 시도 할 때부터 전체 목록을 사용할 수 있기를 원합니다.
예 : 하여 Workbook_Open
이벤트 코드에 다음과 같은 Sometimes the ActiveX Combobox only shows one row, why?, Populating Combo Box on WorkBook Open 내가 시도 여러 가지 접근 방법 :
.ListFillRange = "DropDownDates"
.List = DateArrToStrAr
는 또한 콤보 상자에 항목을 추가 배열을 반복했다. 내가 드롭 다운 결과에서 동일한 1 개의 보이는 항목을 얻을 때마다.
누군가 내가 잘못 가고 있다고 말할 수 있습니까?
Private Sub ComboBox1_Change() 'QH 2/11/17
Dim datesArr() As String
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Lkup")
datesArr = DateArrToStrArr 'function that reads a named range of dates and converts to string to avoid dd/mm becoming mm/dd
If ComboBox1.Value = vbNullString Then ComboBox1.Value = "01/04/2016"
ComboBox1.List = datesArr
'.....other code
End Sub
참고 :
배열
나의 현재 코드에서 ThisWorkbook
Private Sub Workbook_Open()
With Worksheets("Benchmarking").OLEObjects("ComboBox1").Object
.Clear
.List = DateArrToStrArr '
End With
End Sub
2) 워크 ("벤치 마크")
1) 인 datesArr
은 "DropDownDates"
(통합 문서 범위)의 명명 된 범위를 읽고 문자열 배열로 변환하는 DateArrToStrArr()
함수로 채워집니다. 그런 다음 ComboBox에 할당됩니다. 엑셀 2016 64 비트 Windows :
DropDownDates
는 공식 =OFFSET(Lkup!$F$16,,,Lkup!$M$12,)
셋업과 동적 명명 된 범위입니다.
컨트롤 상자 인 경우 '입력 범위'속성을 직접 'DropDownDates'로 설정할 수 있으며 값이 표시됩니다. 프로그래밍 방식으로이 작업을 수행 할 이유가 있습니까? –
나는 지금 프로그래밍 방식으로 왜 그것을하고 있었는지 기억한다. 콤보 상자에 숫자 또는 mm/dd/yyyy 형식이 표시되지 않도록 문자열이 채워져 있는지 확인했습니다. 이것은 "dd/mm/yyyy"가 항상 표시되도록합니다. 소스 범위는 DateArrToStrArr() 함수가 string으로 변환되기 전의 날짜입니다. – QHarr
범위'DropDownDates'의 날짜가 고정되었거나 계산 되었습니까? 계산 된 경우 recalc를 사용하기 전에 강제로 시도하십시오. – CLR