簡體   English   中英

Excel ActiveX ComboBox 顯示上一個值問題

[英]Excel ActiveX ComboBox Displays Previous Value Issue

電子表格上嵌入式 ActiveX ComboBox 表單的問題,其中:

  • 更改 ComboBox 中的值后,值會正確更改
  • 但是,當在工作表上選擇一個單元格/形狀時,ComboBox 值會在一瞬間恢復為以前的值,然后再恢復到新值

  • 問題原因:如果在更改 ComboBox 值后按下宏的按鈕,則在宏運行時顯示舊的 ComboBox 值,而不是新值

問題有沒有辦法以編程方式強制此事件(在顯示新值之前恢復為舊值)?

我已經嘗試在 ComboBox 的 Change 事件中以及在工作表上的另一個形狀調用的宏中使用以下內容:

  • 計算工作表
  • 選擇/激活單元格
  • 屏幕更新 = 假,屏幕更新 = 真

進行了更多搜索並發現了這個問題Excel ActiveX Combobox在出現相同問題時失去焦點時會顯示先前的選擇

將從這里開始:

我創建了一個組合框,里面有各種水果作為項目。

我點擊了梨。 然后是菠蘿。 然后單擊單元格 A1,觸發失去焦點事件。

Private Sub ComboBox1_LostFocus()
    Debug.Print ComboBox1.Value
    Debug.Print ComboBox1.Value
    Debug.Print ComboBox1.Value
End Sub

這是我直接窗口中的文字:菠蘿菠蘿菠蘿

這讓我認為這是一個渲染問題,而不是值更改,盡管它可能發生得太快以至於我的 debug.print 沒有捕捉到它。

有趣的是,如果您從 VBA 內部進行調用,則不會發生閃存:

Sub Main()
    ComboBox1.Value = "mango"
    Range("A1").Select
End Sub

也不是你只是跑

    ComboBox1.Value = "mango"

然后單擊工作表並選擇一個單元格

LostFocus事件添加到具有選擇單元格的行的組合框。 This removed the "flicker" to the previous value when another cell on the sheet was selected, and also caused the ComboBox value to "flicker" back to the new value after "flickering" to the old value when a command button was clicked after changing ComboBox 的值...

因此,這解決了我的問題(主要是 - 無法防止在通過命令按鈕運行另一個宏時發生“閃爍”,但至少在另一個宏運行時該值不會停留在舊值上)

想法來自這個線程: 當用戶從下拉組合框(ActiveX)中選擇值時會觸發什么事件?

我有一個可以解決的解決方案。

我將 ActiveX 標簽插入到工作表(與 ComboBox 位於同一位置)並將標簽visible狀態設置為False

每次下拉框關閉時,焦點都設置在不可見標簽上

首先是一個全局變量。

 Public DropDownBegin As Boolean

然后是子程序

Private Sub ComboBox1_DropButtonClick()
    DropDownBegin = Not DropDownBegin
    If Not DropDownBegin Then
        ActiveSheet.Shapes("Label1").OLEFormat.Object.TopLeftCell.Select
    End If
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM