我已經實現了下面的代碼,列出一個ComboBox內的所有打開的工作簿的名稱:列表打開的工作簿減去當前工作簿
Option Explicit
Private Sub ComboBox1_Change()
If Me.ComboBox1.ListIndex < 0 Then
Me.CommandButton2.Enabled = False
Else
Me.CommandButton2.Enabled = True
End If
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub CommandButton2_Click()
MsgBox "Are you sure you want to select " & Me.ComboBox1.BoundValue, vbOKOnly
Application.Workbooks(Me.ComboBox1.Value).Activate
End Sub
Private Sub UserForm_Initialize()
Dim myWin As Window
Dim wkbk As Workbook
With Me.ComboBox1
.Style = fmStyleDropDownList
End With
With Me.CommandButton1
.Caption = "Cancel"
.Enabled = True
.Cancel = True
.TakeFocusOnClick = False
End With
With Me.CommandButton2
.Enabled = False
.Default = True
.Caption = "Activate Workbook"
.TakeFocusOnClick = False
End With
Me.Caption = "Please select a workbook"
For Each wkbk In Application.Workbooks
For Each myWin In wkbk.Windows
If myWin.Visible = True Then
Me.ComboBox1.AddItem wkbk.Name
Exit For
End If
Next myWin
Next wkbk
End Sub
這個偉大的工程,但也列出在列表頂部的當前工作簿。有沒有辦法將當前工作簿從列表中排除?
我已經嘗試在ComboBox下拉單擊事件上實施以下操作,但沒有多少運氣。
ComboBox1.RemoverItem ("Workbook.xls")
乾杯
添加一個'if not thisworkbook'? – findwindow
'如果不是wkbk.Name = Thisworkbook.Name' –