我希望实现以下目标:
H 列有来自数据验证列表的 5 个潜在输入:
Pass, High, Medium, Low & N/A
如果H 列要么High
,Medium
要么Low
,我需要第一栏立即要求评论通过对话框。
我该如何设置?
补充一点可能也有好处,我对脚本/代码编写一无所知,也不懂任何“Excel 术语”,我是一个非常基础的用户,我所知道的一切都是通过反复试验自学的!
答案1
根据我对您问题的理解,我建议使用 VBA 解决方案。在此示例中,示例列范围是 H2:H7,并且您预期的验证已针对此范围进行。
在工作表中,按 ALT + F11 访问 VBA 编辑器。在左窗格下查看 Microsoft Excel 对象。双击下方的目标工作表以打开“偶数驱动”编程窗口。从第一个下拉菜单中选择“工作表”,然后从第二个下拉菜单中选择“更改”。这是“工作表更改事件”。代码编辑器中将显示以下几行。
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
将以下代码放在这两行之间。
If Target.Rows.Count > 1 Or Target.Columns.Count > 1 Then
Exit Sub
End If
Dim com As String
Dim comm1 As String
'Specify the range below. Set single column range else the code will error out
Set isect = Application.Intersect(Target, Range("H2:H7"))
If isect Is Nothing Then
Else
If Target.Value = "High" Or Target.Value = "Medium" Or Target.Value = "Low" Then
com = "Enter comment in " & Target.Offset(0, 1).Address(RowAbsolute:=False, columnabsolute:=False)
Do While comm1 = ""
comm1 = Application.InputBox(prompt:=com, Type:=2)
On Error GoTo myloop
If comm1 = False Then
comm1 = ""
End If
myloop:
On Error GoTo -1
Loop
Target.Offset(0, 1).Value = comm1
Else
Target.Offset(0, 1).Value = "" 'Remove this line if not desired
End If
End If
将文件保存为启用宏的 Excel 工作簿。返回工作表。通过从验证列表框中选择预期值来测试此代码,看看它是否适合您并满足您的要求。不过,此代码可能没有广泛的错误检查。
我添加的一个小东西是,如果您稍后将状态更改为“通过”,则注释将从 I 列中删除。