VBA Userform Entry第一次输入名称在名称01的末尾添加01,然后第二次添加02

时间:2014-01-01 19:50:09

标签: vba series userform countif

我正在尝试将Excel中的以下代码翻译为VBA用户表单条目修饰符:

例如,我知道如何编写下面的所有列,但VBA中的列C除外。

Name    Individual ID   Unique ID   First Name  Last Name   ID#
Charles Robol   CharlRobol  CharlRobol01    Charles Robol   01
Charles Robol   CharlRobol  CharlRobol02    Charles Robol   02
Charles Robol   CharlRobol  CharlRobol03    Charles Robol   03
Charles Robol   CharlRobol  CharlRobol04    Charles Robol   04
Charles Robol   CharlRobol  CharlRobol05    Charles Robol   05
Charles Robol   CharlRobol  CharlRobol06    Charles Robol   06


 =B4&TEXT(COUNTIF($B$2:$B4,$B4),"00")

B列本质上是不同的唯一值,其中01是在第一次出现时加上02然后是第四次。此功能的目的是为了便于确定条目是否是原始条目,如果不是原始条目,那么我希望userform自动具有与前一个相同名称条目相关联的值。

我知道我可以这样做:

  1. 将上面的函数转换为VBA组合框代码/ rowsource?/ controlsource? (最理想,因为这样可以保证条目在userform中正确更新

  2. 以某种方式引用Excel逻辑使用上述函数的单元格,其中excel函数位于(Sheet1!ActiveCell.Row,3)

  3. 我显然不理解VBA和excel逻辑和语法能够在不仅仅研究一般VBA编码的情况下解决这个问题,直到我自己解决问题。

    非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这正是Access中更好处理的事情,但我意识到您可能对Excel解决方案更感兴趣。您实际上可以直接将该公式转换为VBA,因为您可以通过Application.WorksheetFunctions调用工作表函数,如下所示:

Range("C4") = Range("B4") & Application.WorksheetFunction.Text(Application.WorksheetFunction.CountIf(Range("B2:B4"), Range("B4")), "00")

我把它作为练习让你将代码包装在一个函数中并将其概括为适用于你的情况,但如果你遇到麻烦就放弃评论。