我的同事和我分享了很多數據,並在excel中工作了很久,所以我們在網絡驅動器上創建了不少共享表格供我們的實用程序使用。
我們已經使用是開放的全局列表,本地複製它,並用它來填充一個下拉的一種方法:
Sub GetStatusCodeList()
Dim ThisWb
Set ThisWb = ThisWorkbook
If Dir("\\SERVERNAME\GlobalUtilities\GlobalTables.xlsx") = "" Then Exit Sub
Application.ScreenUpdating = False
Workbooks.Open "\\SERVERNAME\GlobalUtilities\GlobalTables.xlsx", ReadOnly:=True
ActiveWorkbook.Sheets("GlobalTables").UsedRange.Copy ThisWb.Sheets("DropDown").Range("A1")
ActiveWorkbook.Close
Application.ScreenUpdating = True
End Sub
另一種方法簡單地讀取從全局列表中的細胞,並將它們直接寫入條件格式列表。這種特殊的代碼創建可用紙張的數組,並使用它來填充下拉列表:
Sub CreateSheetDropdown()
Dim sheetCounter, i
Dim theSheets() As String
ReDim theSheets(ActiveWorkbook.Sheets.Count + 1) As String
For i = 1 To ActiveWorkbook.Sheets.Count
theSheets(i) = ActiveWorkbook.Sheets(i).Name
Next i
With ThisWb.Sheets(Mtab).Range("SourceTabName")
.Value = theSheets(1)
.Validation.Delete
'.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
' Operator:=xlBetween, Formula1:=Join(theSheets, ",")
.Validation.Add Type:=xlValidateList, Operator:=xlBetween, Formula1:=Join(theSheets, ",")
.Validation.ShowError = False
.Interior.color = RGB(250, 200, 200)
End With
End Sub
最後,該代碼會從我們保持我們的共享驅動器上的全局列表中的一個窗體下拉:
Private Sub UpdateDropdowns()
Dim thisWorkbook
Set thisWorkbook = ActiveWorkbook
If Dir(TABLEPATH) = "" Then
MsgBox ("GlobalTables File Not Found - Critical Error")
Me.Hide
Exit Sub
End If
Workbooks.Open Filename:=TABLEPATH, ReadOnly:=True
'---------------------------------------------
'Method would load from GlobalTables.xlsx
'---------------------------------------------
'Load Utility Names
For Each c In ActiveWorkbook.Sheets(UTIL_SHEET).Range("A2:A" & ActiveWorkbook.Sheets(UTIL_SHEET).Cells(ActiveWorkbook.Sheets(UTIL_SHEET).Rows.Count, "A").End(xlUp).row).Cells
AddUtilToAll (c.Value)
Next c
End Sub
Private Sub AddUtilToAll(ByVal s)
For Each c In Me.Controls
If InStr(c.Name, "UtilityCombo") Then c.AddItem (s)
Next c
End Sub
可能最簡單的方法是第一個 - 只需打開存儲在共享驅動器上的工作簿並在本地複製每個下拉列表即可。您可以在Worksheet初始化函數中運行此操作,以便每次打開文件時更新下拉列表。
希望這可以幫助,讓我知道你是否想要更多的信息。
編輯:
它可能更容易在這裏找到。
只是鏈接的下拉到一個名爲範圍:
'Delete the old named range
ThisWorkbook.Names("TestDropdown").Delete
'Define the new named range
ThisWorkbook.Names.Add Name:="TestDropdown", RefersTo:=Range("A1:A25")
你使用哪種版本的Excel? – reporter 2015-02-06 16:25:48
是**客戶端和項目Droplists.xlsx **子運行時已經打開? – 2015-02-06 16:29:27
我正在使用Excel 2007記者。加里的學生我已經嘗試過,客戶端和Droplist打開並關閉。 – 2015-02-06 16:35:23