簡體   English   中英

Excel 多選列表框 VBA 代碼在 Excel 2010 和 2016 中運行良好,但在 Office 365 中運行不正常

[英]Excel multi-select listbox VBA code working fine in Excel 2010 and 2016 but not in Office 365

以下 VBA 宏 function 在 Office 2016 中開發並在專業環境中用於 Office 2010 時運行良好。 最近 Office 2010 基礎架構升級到 Office 365,從那時起,以下宏僅更新兩個多選框之一:

Sub Main_OK_CommandButton_Click()

Worksheets("Database").Activate
Worksheets("Database").Range("I50:J60").Clear

Dim i As Long
Dim j As Long
Dim m As Long
Dim n As Long

For i = 0 To Meeting_ListBox.ListCount - 1
    If Meeting_ListBox.Selected(i) Then
        j = j + 1
        Cells(j + 50, 9) = Meeting_ListBox.List(i)
    End If
Next

For m = 0 To Participant_ListBox.ListCount - 1
    If Participant_ListBox.Selected(m) Then
        n = n + 1
        Cells(n + 50, 10) = Participant_ListBox.List(m)
    End If
Next

End Sub

在 Excel 365 下,只有 Meeting_ListBox 選擇將被傳輸到數組,而不管宏中的順序或 i、j 等聲明的長值的順序。 Participant_Listbox 可能被忽略,因為所選選項未被識別。 我知道這 2 個列表框具有相同的設置,因為我已將工作中的一個復制到另一個,重命名它,更改 RowSource,同時保持所有其他設置相同,但問題仍然存在。 RowSource 列表是使用 COUNTIF(在本例中為數據庫:$BH$40)根據其長度動態定義的命名范圍,上下文如下:

=OFFSET(Database!$BH$42,0,0,Database!$BH$40,1)

此用戶窗體中總共有 4 個列表框。 其中兩個是單個 select,一旦單擊它們就會更新它們的輸出。 一直以來都存在一些奇怪的選擇行為,即在單擊單個 select 列表框之一后,先前選擇的多選列表框似乎在視覺上失去了其選中狀態。 盡管如此,盡管看起來已被取消選擇,但它始終“記住”多項選擇。 即使兩個多選列表框都在用戶窗體中保持可視選擇狀態,Office 365 下 Participant_Listbox 選擇的這種“遺忘”仍然會發生。

基於在線搜索,我嘗試在 Excel 365 中的 VBA 調試下“重新編譯”,但沒有成功

我發現了問題所在,它與列表框行源中使用的命名范圍類型有關。 作為行源的簡單單元格范圍可以正常工作。 當如上所述動態確定行源范圍時,它會出錯。 我最終改變了行源范圍動態更新的方式。 仍然不明白為什么行為會改變,但現在已經解決了。

暫無
暫無

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

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