vba 自动排序_实现工作表按指定名称的顺序排序

0bb9ca4a20b3386d4dc1f783598e66bc.png

实现工作表按指定名称的顺序排序大家好,我们今日讲解“VBA信息获取与处理”教程中第十三个专题“VBA如何让Excel工作表按指定的顺序排列”的第二节“实现工作表按指定名称的顺序排序”,这个专题是非常实用的知识点,希望大家能掌握利用。

第二节 实现工作表按指定名称的顺序排序

大家好,我们继续本专题的学习。上一讲中,我们讨论了工作表按名称排序的方案,并利用函数来实现了。但很多的情况,我们需要工作表是按照指定的名称进行排序的,也就是说,我们要实现自定义排序的过程。当你给出指定的顺序后,剩下的工作由代码完成。

实现场景:如下面的截图,我会给出工作表要求排序的顺序,要求代码实现,实现的过程有校验,校验包括给出的名称是否正确,给出的工作表名称是否重复。下面我们来一步步地实现这个过程。

1 工作表按指定顺序排序的思路分析

为了达到上述场景的要求,我们先进行过程分析。排序的过程,就是工作表按顺序进行移动,我们可以保留第一个工作表的位置不变,然后将指定工作表按照顺序依次移到到第二个工作表之前。为了完成校验的过程,我们可以将给出的工作表名称赋值给这个工作薄的工作表,然后取一个返回值,如果可以顺利的实现,那么就可以说明这个工作表是存在的,否则不存在;为了校验给出的工作表是否重复,我们可以利用字典在给出的工作表名称中进行排重,还可以利用工作表的索引来完成,这里我按照后者来实现,前者读者可以参考我的《VBA数组与字典解决方案》的相关内容学习。

当然我们要在整个的过程中要和用户进行友好的互动,哪里出现了问题要反馈给用户。

2 工作表按指定顺序排序的代码实现

我先给出我的代码,然后再分析:

Public Function SortWorksheetsByNameArray(NameArray() As Variant, ByRefErrorText As String) As Boolean

Dim Arr() As Long

ErrorText = vbNullString

ReDimArr(LBound(NameArray) To UBound(NameArray))

On Error Resume Next

For N = LBound(NameArray) To UBound(NameArray)

'校验工作表的名称正确性

Err.Clear

M = Len(Worksheets(NameArray(N)).Name)

If Err.Number<> 0 Then

ErrorText = NameArray(N) & "工作表不存在"

SortWorksheetsByNameArray = False</

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值