因此,我在 Excel 中使用数据验证在单元格中有一个下拉列表,这只是使用引用另一个工作表中的范围的列表选项。我在多个工作表中有这个下拉菜单。当我从一张工作表的下拉列表中选择一个项目时,它不会将相同的选择应用于其他工作表的下拉列表。
我想知道...是否可以将其设置为如果我从一张纸中的下拉菜单中进行选择,它将将该选择应用于我在其他纸中的下拉菜单?
使用 VBA 解决方案:
使用相应的下拉列表“selectXXX”命名所有单元格 - 请小心在工作表级别应用该名称。
然后将以下代码添加到包含下拉列表的每个工作表的工作表模块中。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target.cells(1,1), Me.Range("selectXXX")) Is Nothing Then
updateSelection Target.cells(1,1)
End If
End Sub
每当您更改工作表上的单元格时,都会触发此代码。 如果此单元格是包含验证列表的单元格,则调用
updateSelection
。
Public Sub updateSelection(rgSource As Range)
Dim strName As String
strName = rgSource.Name
Dim wsSource As Worksheet
Set wsSource = rgSource.Parent
Dim ws As Worksheet, rgTarget As Range
For Each ws In ThisWorkbook.Worksheets
If Not ws Is wsSource Then
If tryGetRangeByName(strName, ws, rgTarget) = True Then
rgTarget.Value = rgSource.Value
End If
End If
Next
End Sub
Private Function tryGetRangeByName(strName As String, ws As Worksheet, _
ByRef rg As Range) As Boolean
On Error Resume Next
Set rg = ws.Range(strName)
If Err = 0 Then tryGetRangeByName = True
On Error GoTo 0
End Function
updateSelection
检查每个工作表中是否存在具有相同名称的范围,如果找到则设置值。