Microsoft Excel是Microsoft為使用Windows和Apple Macintosh操作系統的電腦編寫的一款電子表格軟件。直觀的界面、出色的計算功能和圖表工具,再加上成功的市場營銷,使Excel成為最流行的個人計算機數據處理軟件。 在Excel工作表的某個單元格中應用數據有效性設置來制作下拉列表時,如果引用的行或列區域中包含空單元格或重復項,那么在有效性下拉列表中會與原區域中的內容完全相同,也會包含空值或重復項,顯得有些不夠美觀。例如下圖是A1單元格的一個下拉列表。 ??? ??? 通常可以去掉重復項和空單元格后再設置數據有效性,但如果不想改變單元格的結構,可以使用下面的VBA代碼來解決這個問題,假如要設置下拉列表的單元格為D5,數據區域為K8:K38,步驟如下: ??? 1.按Alt+F11,打開VBA編輯器。 ??? 2.在“工程”窗口中雙擊要包含數據有效性設置的工作表,在右側代碼窗口中輸入下列代碼: Private Sub Worksheet_SelectionChange(ByVal Target As Range) ?? Dim RowNum, ListRows, ListStartRow, ListColumn As Integer ?? Dim TheList As String ?? Dim Repeated As Boolean ?? If Target.Address <> "$D$5" Then Exit Sub ?? With Range("k8:K38") ????? ListRows = .Rows.Count ????? ListStartRow = .Row ????? ListColumn = .Column ?? End With ?? For RowNum = 0 To ListRows - 1 ????? Repeated = False ????? If Not IsEmpty(Cells(ListStartRow + RowNum, ListColumn)) Then ??????? For i = 0 To RowNum - 1 ????????? If Cells(ListStartRow + RowNum, ListColumn) = Cells(ListStartRow + i, ListColumn) Then ??????????? Repeated = True ??????????? Exit For ????????? End If ??????? Next i ??????? If Not Repeated Then TheList = TheList & Cells(ListStartRow + RowNum, ListColumn) & "," ????? End If ?? Next RowNum ?? TheList = Left(TheList, Len(TheList) - 1) ?? With Range("D5").Validation ????? .Delete ????? .Add _ ????? Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=TheList ?? End With End Sub ??? 3.關閉VBA編輯器返回Excel界面,選擇D5單元格,單擊下拉箭頭即可看到不包含空值和無重復的下拉列表。 ??? 說明:上述代碼使用了工作表的SelectionChange事件,當在工作表中重新選擇單元格后會執行上述代碼。需根據實際將代碼中的單元格“D5”和區域“k8:K38”進行更改。
Excel整體界面趨于平面化,顯得清新簡潔。流暢的動畫和平滑的過渡,帶來不同以往的使用體驗。
|