如何将列表框初始化为列表中所需的起点?
How to initialize a listbox to a desired starting point in the list?
我为 Excel 创建了一个宏,它会打开工作簿中所有可见 sheet 的列表,并在滚动列表时转到所需的 sheet。这个想法是尽可能避免使用鼠标。
我被迫从列表中的第一项开始向下滚动。
我想从最初的 sheet( 可能是 )开始“开始”,这样我就可以滚动 up/down,具体取决于 sheet 我想开。
换句话说,
- 我希望列表框填充所有可见的 sheets
- 我希望用户的起点处于活动状态sheet,这样他们就可以从他们的起点up/down滚动
列表框代码:
Private Sub CommandButton1_Click()
Unload ListBox
End Sub
Private Sub UserForm_Initialize()
Dim WS As Worksheet
For Each WS In Worksheets
ListBox1.AddItem WS.Name
Next WS
End Sub
Private Sub ListBox1_Click()
Sheets(ListBox1.Value).Activate
End Sub
打开列表框的代码:
Public Sub ShowUserForm()
Load ListBox
ListBox.Show
Debug.Print "===="
Debug.Print
End Sub
那是什么:
Private Sub UserForm_Initialize()
Dim wksTab As Worksheet
For Each wksTab In ThisWorkbook.Worksheets
If wksTab.Visible = xlSheetVisible Then
If wksTab.Name <> ActiveSheet.Name Then
Me.ListBox1.AddItem wksTab.Name
End If
End If
Next wksTab
Me.ListBox1.AddItem ActiveSheet.Name
Me.ListBox1.ListIndex = Me.ListBox1.ListCount - 1
End Sub
此致
伯恩德
另一个...
Private Sub UserForm_Initialize()
Dim ws As Worksheet, idx As Long
With Me.ListBox1
For Each ws In ActiveWorkbook.Worksheets
If ws.Visible = xlSheetVisible Then
.AddItem ws.Name
If ws Is ActiveSheet Then
idx = .ListCount - 1 ' item indexes start at zero
End If
End If
Next
.ListIndex = idx '
End With
End Sub
Private Sub ListBox1_Change()
Worksheets(ListBox1.Value).Activate
End Sub
你提到了“所有...工作表”,如果你想包括图表工作表循环工作表中的每个 objSheet,并在更改事件中用工作表替换工作表
我为 Excel 创建了一个宏,它会打开工作簿中所有可见 sheet 的列表,并在滚动列表时转到所需的 sheet。这个想法是尽可能避免使用鼠标。
我被迫从列表中的第一项开始向下滚动。
我想从最初的 sheet( 可能是 )开始“开始”,这样我就可以滚动 up/down,具体取决于 sheet 我想开。
换句话说,
- 我希望列表框填充所有可见的 sheets
- 我希望用户的起点处于活动状态sheet,这样他们就可以从他们的起点up/down滚动
列表框代码:
Private Sub CommandButton1_Click()
Unload ListBox
End Sub
Private Sub UserForm_Initialize()
Dim WS As Worksheet
For Each WS In Worksheets
ListBox1.AddItem WS.Name
Next WS
End Sub
Private Sub ListBox1_Click()
Sheets(ListBox1.Value).Activate
End Sub
打开列表框的代码:
Public Sub ShowUserForm()
Load ListBox
ListBox.Show
Debug.Print "===="
Debug.Print
End Sub
那是什么:
Private Sub UserForm_Initialize()
Dim wksTab As Worksheet
For Each wksTab In ThisWorkbook.Worksheets
If wksTab.Visible = xlSheetVisible Then
If wksTab.Name <> ActiveSheet.Name Then
Me.ListBox1.AddItem wksTab.Name
End If
End If
Next wksTab
Me.ListBox1.AddItem ActiveSheet.Name
Me.ListBox1.ListIndex = Me.ListBox1.ListCount - 1
End Sub
此致 伯恩德
另一个...
Private Sub UserForm_Initialize()
Dim ws As Worksheet, idx As Long
With Me.ListBox1
For Each ws In ActiveWorkbook.Worksheets
If ws.Visible = xlSheetVisible Then
.AddItem ws.Name
If ws Is ActiveSheet Then
idx = .ListCount - 1 ' item indexes start at zero
End If
End If
Next
.ListIndex = idx '
End With
End Sub
Private Sub ListBox1_Change()
Worksheets(ListBox1.Value).Activate
End Sub
你提到了“所有...工作表”,如果你想包括图表工作表循环工作表中的每个 objSheet,并在更改事件中用工作表替换工作表