2016-02-04 123 views
0

嗨Stackoverflow社區,Excel VBA - Worksheet_Change下拉列表

我想添加一個數據驗證下拉列表,如果條件滿足。

使用Excel VBA,我想添加下拉列表來填充列N,這是我的帳戶狀態,只要單詞「Final Recon」出現在列C中,這是我的評估狀態,但只填充單詞「最後行動」出現在C列

使用Excel VBA - 私人小組Worksheet_Change(BYVAL目標作爲範圍):

如果「最後行動」將出現在列C然後填充與下拉列表以下狀態:「最終」或「正在審閱」,否則請不要填充下拉列表。

我可以使用非VBA驗證列表,但在這種類型的評估審查中,我需要使用VBA版本。

這是我到目前爲止,我pretyy很卡住。 如果C列中出現最終偵察,則在C列中有「最終偵查」,然後用「最終」和「審查中」選項填充下拉列表。

但由於某些原因在下拉式列表DWON沒有在列N填充當最後偵察出現在C列

預先感謝您的任何幫助或解決方案,您可能有。

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 

If Target.Column = 1 Then 

    ThisRow = Target.Row 

    If Target.Value = "Final Recon" Then 

    With Selection.Validation 
     .Range ("N" & ThisRow) 


.Delete 
.Add Type:=xlValidateList, Formula1:="=Final", Formula2:="=Under Review" 
End With 

    Else 
     Range("N" & ThisRow) = "" 
    End If 
    End If 
End Sub 
+2

......... **如果Target.Column = 3那麼** –

+0

did not woked。我需要再次訪問代碼。 – cemg

回答

0

我弄明白了。我遇到的唯一問題是 下拉列表不顯示,如果「Final Recon」不在列「C」中。

On Error Resume Next 

If Target.Column = 3 Then 

    If Target.Validation.Type = "Final Recon" Then 

    Application.EnableEvents = False 

    ''get the data drop-down validation list 

    Target.Offset(0, 11).Select 

    With Selection.Validation 


    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop 
    Operator:=xlBetween, _      
    Formula1:="Final", Formula2:="Under Review" 

    .IgnoreBlank = True 
    .InCellDropdown = True 
    .InputTitle = "" 
    .ErrorTitle = "" 
    .InputMessage = "" 
    .ErrorMessage = "" 
    .ShowInput = True 
    .ShowError = True 

    End With 

Else 
    Target.Offset(0, 11).Value = "" 

    End If 
End If 

exitHandler: 
    Application.EnableEvents = True 
    Exit Sub