2

ユーザーが1つのセルをこの値に変更した後、セルの範囲を特定の値に更新する関数があります。ただし、この範囲のセルは同じ検証範囲を共有していないため、更新されたセルごとに個別の検証を行いたいと考えています。

これが私がこれまでに持っているものです。各セルのデータ検証は、許容値を持つ独自の検証範囲に設定されます。何らかの理由で、データが検証範囲内にない場合でも、検証は true を保持します。validation.value プロパティがどのように機能するのかよくわかりません..

For index = 1 to UBound(someArray)
    wksSomeSheet.Cells(index, column).Value = requiredValue
    If Not wksSomeSheet.Cells(index, column).Validation.Value Then
        MsgBox "A value is not supported for one the cells."
        Exit For
    End If
Next

Range("validationRange").find(requiredValue)または、代わりにを使用するように実装する必要がありますか?

4

1 に答える 1

2

Siddharth のブログを読んだ後、彼のコードに最小限の変更を加えて、私のニーズに合わせました。

Dim currentValidation As Excel.Validation
wksSomeSheet.Cells(index, Target.Column).Value = requiredValue

Set currentValidation = wksSomeSheet.Cells(index, Target.Column).Validation
If currentValidation.Type = xlValidateList Then
    Dim validationFound As Boolean, MyArray As Variant
    validationFound = False
    MyArray = Application.WorksheetFunction.Transpose(Range(Mid(currentValidation.Formula1, 1)))
    For i = 1 To UBound(MyArray)
        If requiredValue = MyArray(i, 1) Then
            validationFound = True
            Exit For
        End If
    Next

    If Not validationFound Then
        MsgBox wksSomeSheet.Cells(index, wksSomeSheet.Range("myRange").Column).Value & " does not have a valid value."
        Exit For
    End If
End If
于 2012-04-17T15:53:20.403 に答える