本节说的是使用VBA实现下拉列表框的实现,同时下拉框显示的数值是从另一个sheet中获取。
实现效果
比如如下效果:
代码实现:

'刷新ComboBox1内容
Private Sub ComboBox1_DropButtonClick()
ComboBox1.List() = get_arr("物流装箱清单", 2, 1)
End Sub
- 第一行:
ComboBox1_DropButtonClick()是ComboBox1控件下拉时候触发的事件过程,只要触发下拉动作就执行该过程代码; - 第二行:
get_arr("物流装箱清单", 2, 1)是自定义的函数,从“物流装箱清单”工作表中第1列、第2行开始查找,返回一个非重复数组;
'定义一个函数:获取sheet中的第几列的非重复值
Private Function get_arr(sheet_name, row, col)
Dim dic, i
Set dic = CreateObject("scripting.dictionary") ' 创建字典
With Sheets(sheet_name)
For i = row To .Cells(Rows.Count, col).End(3).row
dic(.Cells(i, 1).Value) = ""
Next i
End With
get_arr = dic.keys
End Function
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
(select 198766*667891 from DUAL)
(select 198766*667891)
@@IXIyt
555����%2527%2522\'\"
555'"
555
555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
555wFS1XsT3')) OR 290=(SELECT 290 FROM PG_SLEEP(15))--
5555Ndq9bjg') OR 767=(SELECT 767 FROM PG_SLEEP(15))--
555ybhD2H4f' OR 433=(SELECT 433 FROM PG_SLEEP(15))--
555-1)) OR 426=(SELECT 426 FROM PG_SLEEP(15))--
555-1) OR 653=(SELECT 653 FROM PG_SLEEP(15))--
555-1 OR 199=(SELECT 199 FROM PG_SLEEP(15))--
5551zYEsaw4'
555-1 waitfor delay '0:0:15' --
555-1)
555-1
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
5550"XOR(555*if(now()=sysdate(),sleep(15),0))XOR"Z
5550'XOR(555*if(now()=sysdate(),sleep(15),0))XOR'Z
555*if(now()=sysdate(),sleep(15),0)
-1" OR 5*5=25 or "Ua0XcS78"="
-1' OR 5*5=25 or 'YbWLjkJO'='
-1" OR 5*5=25 --
-1' OR 5*5=25 --
-1 OR 5*5=25
-1 OR 5*5=25 --
555
555
555