VBA Excel连接两个变量值以形成新变量
我试图编写一个代码,读取多个实体,对它们进行组织和排序。每个实体都有一个a、B、C等类型,这些类型应该决定它放在哪个表中,所有这些类型都放在我的所有表中。每次我找到任何给定类型的实体时,我也想增加一个特定于该类型的变量 如果找到类型并做两件事,我想做什么: 将当前图纸设置为该类型。 将计数器变量设置为该类型 例如:VBA Excel连接两个变量值以形成新变量,vba,excel,Vba,Excel,我试图编写一个代码,读取多个实体,对它们进行组织和排序。每个实体都有一个a、B、C等类型,这些类型应该决定它放在哪个表中,所有这些类型都放在我的所有表中。每次我找到任何给定类型的实体时,我也想增加一个特定于该类型的变量 如果找到类型并做两件事,我想做什么: 将当前图纸设置为该类型。 将计数器变量设置为该类型 例如: Dim x As Integer, FindSlot As Integer Dim CurrentSheet As String, CurrentPropertyNumb As St
Dim x As Integer, FindSlot As Integer
Dim CurrentSheet As String, CurrentPropertyNumb As String
Dim APropertyNumb As String, BPropertyNumb As String
Dim CPropertyNumb As String
For x = 1 to 2
If x = 1 Then
CurrentSheet = "All"
Else
CurrentSheet = Range("B" & FindSlot)
CurrentPropertyNumb = CurrentSheet & PropertyNumb
End If
Next x
在else块中,CurrentSheet将设置为A、B、C或任何类型。然后,我希望CurrentPropertyNumb设置为PropertyNumb或BPropertyNumb等。显然,我可以用几个If语句来实现这一点,但最终会有12个If语句,我宁愿避免使用它们,而且我认为这会很酷!:
有没有办法做到这一点,或者我的目标太高了?如果您有一系列的值,希望使用字符串值进行索引,那么字典是一个很好的选择:
Dim x As Integer, FindSlot As Integer
Dim CurrentSheet As String, CurrentPropertyNumb As String
Dim PropNums as Object
Dim CPropertyNumb As String
Set PropNums = CreateObject("scripting.Dictionary")
For x = 1 to 2
If x = 1 Then
CurrentSheet = "All"
Else
CurrentSheet = Range("B" & FindSlot)
If Not PropNums.Exists(CurrentSheet) Then
PropNums.Add CurrentSheet, 1 '? what are the initial values here?
Else
PropNums(CurrentSheet) = PropNums(CurrentSheet) +1
End If
CurrentPropertyNumb = PropNums(CurrentSheet)
End If
Next x
也许我没有正确理解你的问题,但你是在听一个精选的案例陈述吗?这里有一个MSDN链接:计数器的用途是什么?@DanWagner不完全正确,如果我使用Select…Case,我最终会逐个查找每种类型,并且不会在多个if语句上节省任何时间/空间。每种类型都应该是唯一的。@TimWilliams实际上计数器中还有一堆打印和格式化语句,我只是没有包括在内。在这个例子中,计数器是无用的,很抱歉误导了你。那么我真的一点也不明白你的问题。。。我唯一能建议的就是试试脚本字典:它可以保存键入任意字符串的值。