返回列号的函数,返回行号或者列号值的函数

首页 > 实用技巧 > 作者:YD1662023-11-02 03:23:08

笔者用Excel VBA开发计划排产软件时,经常遇到一些用户反馈插入一列、删除一列、又或者调整的某列的位置,然后排产软件就无法正常使用了,这也给用户体验带来了一点遗憾。那么Excel是否也能够像其他应用程序一样,不受列表题位置影响呢?其实用Excel VBA自定义函数也能够轻松做到的,下面我分享给大家一个自定义函数。

Function Recol_no(field_name As String, current_row As Long) '功能:返回字段名/列标题所在的列号 'field_name:查找的字段名 'current_row:查找区域的行号 Recol_no = Application.Match(field_name, Rows(current_row), 0) End Function

在【开发工具】选项卡,打开Visual Basic代码编辑器,插入一个模块,复制以上代码,这样一个名称为Recol_no()函数就定义好了,它的功能就是返回字段名/列标题所在的列号,只需传入两个参数,field_name表示要查找的列表题/字段名;current_row表示要查找的内容所在的行号。

为方便大家理解,下面我用示例演示一下。

返回列号的函数,返回行号或者列号值的函数(1)

示例的功能需求很简单,就是要用Excel VBA代码事件进行销售额计算,【销售额计算】按钮事件代码如下:

Sub 销售额计算() Dim 单价_no, 销量_no, 销售额_no As Long '单价列号,销量列号,销售额列号 Dim 当前行_no As Long 单价_no = Recol_no("单价", 1) 销量_no = Recol_no("销量", 1) 销售额_no = Recol_no("销售额", 1) For 当前行_no = 2 To 4 Cells(当前行_no, 销售额_no) = Cells(当前行_no, 销量_no) * Cells(当前行_no, 单价_no) Next End Sub

单击【销售额计算】按钮后,计算结果显示如下图:

返回列号的函数,返回行号或者列号值的函数(2)

下面将单价、销量、销售额这三列位置全部调整,如下图所示:

返回列号的函数,返回行号或者列号值的函数(3)

再次单击【销售额计算】按钮,程序运行正常,而且计算结果显示完全一致,如下图显示:

返回列号的函数,返回行号或者列号值的函数(4)

由此可见,单价、销量、销售额的数据列可以随意调整,其计算结果都是正确的。

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.