根据先前的单元格输入将单元格设为必填项

根据先前的单元格输入将单元格设为必填项

我希望实现以下目标:

H 列有来自数据验证列表的 5 个潜在输入:

Pass, High, Medium, Low & N/A

如果H 列要么HighMedium要么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 列中删除。

在此处输入图片描述

相关内容