我有以下Excel表格:
singleton
用户应在B列中按每个产品定价。价格根据C栏中的值进行限制。在数据验证菜单中,我使用了“十进制”标准,并将> = C2应用于每个值列B.此限制正常。但是,稍后用户将看不到C列,因此我还想要包含一个小窗口,当用户将鼠标悬停在B列中的单元格上时,该窗口显示C列中的值作为建议。
您是否知道Excel中的数据验证菜单是否可能,或者是否有可以执行此操作的宏?
感谢您的帮助。
答案 0 :(得分:2)
据我所知,数据验证菜单中没有选项。
但是,当价格列中的值发生更改时,您可以使用AddComment
的{{1}}方法来完成此操作。您可以使用Range
事件来处理更改,然后应用注释:
Worksheet_Change
效果如下:
答案 1 :(得分:2)
据我所知,你有两个选项可以在一个小窗口中显示一个值:
(1)您使用@Robin建议的Worksheet_Change
或Worksheet_SelectionChange
事件。然而,有几个不同的"子选项"可用此解决方案:
comments
UserForm
来显示您希望显示的任何信息。这种变化的好处在于,您可以根据自己的喜好自定义表单,并显示您想要的任何内容。以下显示了可以通过这种方式实现的一小部分样本。请注意,表单会自动显示,消失,并使用光标调整其位置。(2)您可以使用帖子中最初要求的Data Validation
。数据验证不仅允许您限制您希望允许的值。但您也可以指定输入消息并自定义错误消息(如果输入的值不正确)。下图为您提供了该解决方案的直观概念。
以下代码段可以帮助您自动设置所有产品的所有价格验证公式。
Option Explicit
Sub AutomaticallySetDataValidations()
Dim lngRow As Long
Dim strProduct As String
Dim dblMinimumPrice As Double
With ThisWorkbook.Worksheets(1)
For lngRow = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
strProduct = .Cells(lngRow, 1).Value2
dblMinimumPrice = IIf(IsNumeric(.Cells(lngRow, 3).Value2), CDbl(.Cells(lngRow, 3).Value2), 0)
If dblMinimumPrice > 0 Then
With .Cells(lngRow, "B").Validation
.Delete
.Add Type:=xlValidateDecimal, AlertStyle:=xlValidAlertStop, Operator _
:=xlGreaterEqual, Formula1:=dblMinimumPrice
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = "Price - " & strProduct
.ErrorTitle = "Invalid price!"
.InputMessage = "Please enter a new price for " & strProduct & _
". The minimum admissable price for this product is " & Format(dblMinimumPrice, "$#,##0") & "."
.ErrorMessage = "The price you entered is not acceptable. Please enter a new value."
.ShowInput = True
.ShowError = True
End With
Else
Debug.Print "No data validation set for row " & lngRow & " since there is no valid minimum price."
End If
Next lngRow
End With
End Sub