VBA Excel 标签生成器,为每种类型的标签添加一个数字

VBA Excel Label Generator, Adding a number for each type of label

各位早安。

我在 Excel 中制作了一个标签生成器,我将在下拉列表中选择的项目转换为转换为这些选择的项目的字母。

这个转换很简单。

If tipoChosen = "UTP" Then
tipo = "U"
End If

关于标签的每个用户输入都会发生这种情况。

我还必须添加一个数字,使每个标签都不同,所以我做了这一行:

FinalLabel = tipo & forn & Format(Nextrow - 2, "00000") & "." & Color & "(" & metragem & ")"

“格式(Nextrow - 2,“00000”)”会根据它所在的行给我一个数字,从 00000 开始并经过无穷大(直到长容量结束)。这很有效,我对此很满意。

我的老板刚刚告诉我我做错了,它需要为每种类型的电缆重新设置这个数字。意思是

if all the other parameters stay the same, it keeps counting.

If it changes it goes back to 00000

If it goes back to whatever type I already used, it keeps counting from the previous number.

老实说,我不知道如何按照我编写代码的方式执行此操作。我需要从头开始做并解决这个问题吗?或者有没有办法按原样实现此功能?

编辑:我也有数字输入,比如电缆的长度,会改变标签的东西。这意味着需要进行“检查”以查看之前是否也使用过该长度。请记住:

if ALL parameters are identical, keep counting from 00000 to whatever labels are to create. (let's say 00100)

if something changes it starts from 00000

if it goes back to a previous used combination of parameters it KEEPS counting from whatever number it was previously. (meaning the next one would be 00101)

你绝对可以返工你已经拥有的东西。

您需要为每种类型添加一个计数器变量,以跟踪计数。在代码的开头将这些计数器设置为 0。

最简单的方法:Dim每个类型都有一个元素的数组,其中将包含该类型的计数器:

Dim i
Dim Counter(1 To 5) As Integer
For i = 1 to 5
   Counter(i).Value = 0
Next i

每次更改类型时,更新 counter 索引 (i)。您可以在此处使用 select 语句来设置 tipo & Counter 索引 (i):

Select Case tipoChosen
Case "UTP"
  tipo = "U"
  i = 1
Case "otherType"
  tipo = "X"
  i = 2
// etc...
End Select

然后每次迭代增加Counter,直到类型改变。

FinalLabel = tipo & forn & Format(Counter(i).value, "00000") & "." & 
   Color & "(" & metragem & ")"
Counter(i).value = Counter(i).value + 1

有更好的方法可以做到这一点,但这可能是最简单的解决方案。如果您想要更复杂的方法,请使用动态变量名,或者使用从主计数器到类型计数器的指针,但这更复杂……