2012-10-04 14 views
0

我有問題。如何根據單元格值啓用/禁用按鈕。如何啓用依賴單元值的按鈕

在Excel表中我有2個按鈕。

我需要做的是。

如果列 「L」 具有數據

所述一個按鈕使

別的

「BQ」 是具有數據

需要啓用另一個按鈕。 其他按鈕將被禁用。

如何實現它。

請幫助.... 在此先感謝

+1

如果兩個有數據嗎? –

回答

2

我等着你的答覆爲,如果兩者都充滿了會發生什麼。我在代碼中添加了該選項。修改它以滿足您的需求。

試試這個

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 
    On Error GoTo Whoa 

    Application.EnableEvents = False 

    CommandButton1.Enabled = False: CommandButton2.Enabled = False 

    '~~> If both cols are filled up 
    If Application.WorksheetFunction.CountA(Columns(12)) > 0 And _ 
    Application.WorksheetFunction.CountA(Columns(69)) > 0 Then 
     '~~> Change the message as applicable 
     MsgBox "Both Columns Cannot have data", vbInformation, "Error" 
    Else 
     '~~> If Col L is filled up 
     If Application.WorksheetFunction.CountA(Columns(12)) > 0 _ 
     Then CommandButton1.Enabled = True 

     '~~> If Col BQ is filled up 
     If Application.WorksheetFunction.CountA(Columns(69)) > 0 _ 
     Then CommandButton2.Enabled = True 
    End If 
LetsContinue: 
    Application.EnableEvents = True 
    Exit Sub 
Whoa: 
    MsgBox Err.Description 
    Resume LetsContinue 
End Sub 
+0

對不起,延遲響應。我在線下。 非常感謝Siddharth。如果兩者都有數據,則應該是錯誤的。數據只能包含L或BQ。 非常感謝你..... – user1049518

+0

沒有憂慮。我已更新上述帖子。 –

+0

你有沒有對代碼做任何改變? –

0

更換CommandButton1的1和CommandButton2以您的按鈕的名稱。

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Application.WorksheetFunction.CountA(Range("L:L")) > 0 Then 
     CommandButton1.Enabled = True 
    Else 
     CommandButton1.Enabled = False 
    End If 

    If Application.WorksheetFunction.CountA(Range("BQ:BQ")) > 0 Then 
     CommandButton1.Enabled = False 
     CommandButton2.Enabled = True 
    Else 
     CommandButton1.Enabled = True 
    CommandButton2.Enabled = False 
End If 

End Sub 
+0

即使Col L和Col BQ中沒有數據,第二個If也將啓用CommandButton1。 –

+0

很好地發現。我會花一些時間來糾正,但我相信你的答案已經完成了這項工作。 – mattboy

+0

感謝mattboy的更新......但我需要逐行進行。這意味着如果用戶需要更新基於該按鈕啓用的第2行中的數據。 – user1049518

相關問題