VBA数据验证-选择问题

时间:2018-07-09 16:36:57

标签: excel-vba vba excel

预先,对不起,我的英语不好。 我一直在为此苦苦挣扎,需要一些帮助。我正在使用来自工作表代码的验证代码。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Not Intersect(ActiveCell, Range("M:M")) Is Nothing Then

 'I've some code here just to filter the list to display

 With Target.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:=blah
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = False
End With
End If

问题是无论何时我在工作表中进行选择,例如:从K到T,im通过M传递,因此代码/验证将应用于整个选择。我只想单击M2,M3等来应用。

我将不胜感激!

问候

2 个答案:

答案 0 :(得分:0)

替换:

With Target.Validation

具有:

With Intersect(Target, Range("M:M"))

答案 1 :(得分:0)

首先,给您Target,您应该使用它而不是ActiveCell

第二,跳过“ M”行中的任何目标。为了计算所有可能发生的事情,您必须进行检查

  • 要更改的范围只有1列宽
  • 范围列为“ M”

这可以通过以下方式完成:

If Not (Target.Columns.Count = 1 And Target.Column = 13) Then
    MsgBox "Co-cooo"
End If