2014-02-27 96 views
0

我試圖在活動工作表內放置一個組合框(但不是activeX組合框),選擇一個列表來填充和鏈接單元格。這是一個容易的任務,例如:(VBA)將組合框+宏事件放在單元格更改上

Sub make_combobox() 

ActiveSheet.DropDowns.Add(69.75, 1.5, 79.5, 40.5).Select 
Selection.Name = "combo" 
ActiveSheet.Shapes("combo").Select 
With Selection 
    .ListFillRange = "$A$1:$A$3" 
    .LinkedCell = "$D$1" 
    .DropDownLines = 8 
    .Display3DShading = False 
End With 

End Sub 

我試圖把宏包含此組合框,選擇時鏈接的單元格是根據在組合框中選擇的選項改變,它會顯示MSGBOX工作。我的部分工作表中寫道的:

Private Sub Worksheet_Change(ByVal Target As Range) 

If Not Intersect(Target, Range("D1")) Is Nothing Then 
    MsgBox "It works!" 
End If 

End Sub 

不幸的是,它不工作(其實,當我手動更改D1值時,它的工作原理,但不是在組合框變化的結果工作)。

回答

1

只需使用OnAction屬性爲控件分配宏。它會在每次對Combobox值進行更改後運行。

+0

謝謝! Bu我仍然想知道爲什麼它不把鏈接單元中的變化看作是執行宏的衝動。 – user2280549

+0

我不認爲你會在這個問題上得到明確的答案。事件發生時觸發事件處理程序。顯然,Excel開發人員決定,通過組合框更改更新單元格值時,不會引發此類事件。我認爲這是一個可行的原因是你有'Combobox_Change'事件處理程序來處理這個問題。如果你可以同時使用,那麼你可能會「複製」一個事件,我無法想象這樣的結果是可取的。 – Kapol

相關問題