选择 table 中的任意单元格后打开用户窗体
Open UserForm upon selecting any cell in a table
我正在使用以下代码在用户选择 table 中的单元格时打开用户表单,其中每个 table 有 30 行,一个 table 中有多个 sheet。我将不得不一次又一次地写100行。
我知道这不是一个有效的方法。如何在不影响功能的情况下使此代码更简单、更短?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$D:$E" Then
Open_Text_Form
End If
If Target.Address = "$D:$E" Then
Open_Text_Form
End If
If Target.Address = "$D:$E" Then
Open_Text_Form
End If
If Target.Address = "$D:$E" Then
Open_Text_Form
End If
If Target.Address = "$D:$E" Then
Open_Text_Form
End If
If Target.Address = "$D:$E" Then
Open_Text_Form
End If
If Target.Address = "$D:$E" Then
Open_Text_Form
End If
End Sub
您可以使用相交函数来查找范围(单元格)是否在给定范围内。不知道 sheet 中的数据是如何设置的,我不能说最好的检查方法是什么。如果 sheet 上的多个 "tables" 实际上是 Excel 表格,您可以执行类似的操作来让它检查您是否在其中一个表格中单击。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim tableRange As Range
For i = 1 To ListObjects.Count
If i = 1 Then
Set tableRange = ListObjects(i).DataBodyRange
Else
Set tableRange = Application.Union(tableRange, ListObjects(i).DataBodyRange)
End If
Next
If tableRange Is Nothing Then Exit Sub
If Not Application.Intersect(Target, tableRange) Is Nothing Then
Open_Text_Form
End If
End Sub
但是,如果 sheet 中的 "tables" 只是普通数据范围,您可以在命名范围内定义它们,您需要做的就是
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("MyNamedRange")) Is Nothing Then
Open_Text_Form
End If
End Sub
我正在使用以下代码在用户选择 table 中的单元格时打开用户表单,其中每个 table 有 30 行,一个 table 中有多个 sheet。我将不得不一次又一次地写100行。
我知道这不是一个有效的方法。如何在不影响功能的情况下使此代码更简单、更短?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$D:$E" Then
Open_Text_Form
End If
If Target.Address = "$D:$E" Then
Open_Text_Form
End If
If Target.Address = "$D:$E" Then
Open_Text_Form
End If
If Target.Address = "$D:$E" Then
Open_Text_Form
End If
If Target.Address = "$D:$E" Then
Open_Text_Form
End If
If Target.Address = "$D:$E" Then
Open_Text_Form
End If
If Target.Address = "$D:$E" Then
Open_Text_Form
End If
End Sub
您可以使用相交函数来查找范围(单元格)是否在给定范围内。不知道 sheet 中的数据是如何设置的,我不能说最好的检查方法是什么。如果 sheet 上的多个 "tables" 实际上是 Excel 表格,您可以执行类似的操作来让它检查您是否在其中一个表格中单击。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim tableRange As Range
For i = 1 To ListObjects.Count
If i = 1 Then
Set tableRange = ListObjects(i).DataBodyRange
Else
Set tableRange = Application.Union(tableRange, ListObjects(i).DataBodyRange)
End If
Next
If tableRange Is Nothing Then Exit Sub
If Not Application.Intersect(Target, tableRange) Is Nothing Then
Open_Text_Form
End If
End Sub
但是,如果 sheet 中的 "tables" 只是普通数据范围,您可以在命名范围内定义它们,您需要做的就是
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("MyNamedRange")) Is Nothing Then
Open_Text_Form
End If
End Sub