|
楼主 |
发表于 2020-8-17 15:24
|
显示全部楼层
Imports System.Windows.Forms
Public Class UserControl1
Public Sub Wb()
REM 知识点:工作簿变量(Excel.Workbook)/For next 循环/
REM 让选中的工作簿跟着滚动条滚动(ListView1.EnsureVisible);ListView1.Items(i).Selected = True
REM 1.依次把打开所有的工作簿添加到列表框中;2.在列表中需寻找等于当前工作簿并让滚动条滚动
Dim wb As Excel.Workbook '定义工作簿变量
On Error Resume Next
Dim i As Int16 '定义i
REM.1.依次把打开所有的工作簿添加到列表框中
ListView1.Items.Clear() '添加工作簿之前清楚ListView1中内容
For Each wb In App.Workbooks '在打开工作簿中循环
ListView1.Items.Add(wb.Name, 1) '依次把工作簿的名字添加到ListView中
Next '结束循环
REM 2.在列表中寻找等于当前工作簿名,并让滚动条随着滚动,同时在列表中选中当前工作簿
REM 让列表中内容选中等于当前工作簿(ListView1.Items(i).Selected = True)
For i = 0 To ListView1.Items.Count - 1
If App.ActiveWorkbook.Name = ListView1.Items(i).Text Then '如果当前工作簿等于列表中内容则
ListView1.Items(i).Selected = True '选中当前工作簿
Exit For '退出循环
End If '结束条件
Next '结束循环
'为了让列表呈现更好的选择效果,让滚动内容呈现向下可见5个内容
If ListView1.Items.Count - (i + 1) < 5 Then
ListView1.EnsureVisible(ListView1.Items.Count - 1)
Else
ListView1.EnsureVisible(i + 5) '让选选钟内容跟着滚动条滚动,且向下多显示5个内容
End If
End Sub
Public Sub Sht()
REM 同工作簿原理一样
Dim sht As Excel.Worksheet, i As Int16
REM.1.依次把正在操作的工作簿中所有工作表添加列表2中
ListView2.Items.Clear() '添加之前清楚所有内容,以免重复添加
On Error Resume Next
For Each sht In App.ActiveWorkbook.Sheets '在操作的工作簿中所有工作表中循环
ListView2.Items.Add(sht.Name, 0) '依次添加到ListView2中
Next '结束循环
REM 2.在列表中寻找等于当前工作表名,并让滚动条随着滚动,同时在列表中选中当前工作簿
REM 让列表中内容选中等于当前工作表(ListView1.Items(i).Selected = True)
For i = 0 To ListView2.Items.Count - 1 '在列表2中循环
If App.ActiveSheet.Name = ListView2.Items(i).Text Then '如果正在操作的工作表等于列表框中内容则
ListView2.Items(i).Selected = True
Exit For
End If
Next '结束循环
'为了让列表呈现更好的选择效果,让滚动内容呈现向下可见5个内容
If ListView2.Items.Count - (i + 1) < 5 Then
ListView2.EnsureVisible(ListView2.Items.Count - 1)
Else
ListView2.EnsureVisible(i + 5) '让选选钟内容跟着滚动条滚动,且向下多显示5个内容
End If
End Sub
Private Sub ListView1_Click(sender As Object, e As EventArgs) Handles ListView1.Click
Dim Index As Int16
Index = ListView1.SelectedIndices(index:=0) '获取当前选中的内容的索引号
App.Workbooks(ListView1.Items(Index).Text).Activate() '激活当前选中的工作簿
App.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlMaximized '让工作簿显示
Call Sht() '选中的工作中的所有工作表,引用sub sht()
End Sub
Private Sub ListView2_Click(sender As Object, e As EventArgs) Handles ListView2.Click
Dim Index As Int16
Index = ListView2.SelectedIndices(index:=0) '获取当前选中的内容索引号
App.Sheets(ListView2.Items(Index).Text).Activate() '激活选中的工作表
End Sub
Private Sub UserControl1_Load(sender As Object, e As EventArgs) Handles Me.Load
Call Wb()
Call Sht()
End Sub
End Class
|
评分
-
1
查看全部评分
-
|