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
有更好的方法可以做到这一点,但这可能是最简单的解决方案。如果您想要更复杂的方法,请使用动态变量名,或者使用从主计数器到类型计数器的指针,但这更复杂……
各位早安。
我在 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
有更好的方法可以做到这一点,但这可能是最简单的解决方案。如果您想要更复杂的方法,请使用动态变量名,或者使用从主计数器到类型计数器的指针,但这更复杂……