在多张纸上匹配下拉选择

问题描述 投票:0回答:1

因此,我在 Excel 中使用数据验证在单元格中有一个下拉列表,这只是使用引用另一个工作表中的范围的列表选项。我在多个工作表中有这个下拉菜单。当我从一张工作表的下拉列表中选择一个项目时,它不会将相同的选择应用于其他工作表的下拉列表。

我想知道...是否可以将其设置为如果我从一张纸中的下拉菜单中进行选择,它将将该选择应用于我在其他纸中的下拉菜单?

excel excel-formula drop-down-menu dropdown
1个回答
0
投票

使用 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
检查每个工作表中是否存在具有相同名称的范围,如果找到则设置值。

© www.soinside.com 2019 - 2024. All rights reserved.