VBA Excel连接两个变量值以形成新变量

VBA Excel连接两个变量值以形成新变量,vba,excel,Vba,Excel,我试图编写一个代码,读取多个实体,对它们进行组织和排序。每个实体都有一个a、B、C等类型,这些类型应该决定它放在哪个表中,所有这些类型都放在我的所有表中。每次我找到任何给定类型的实体时,我也想增加一个特定于该类型的变量 如果找到类型并做两件事,我想做什么: 将当前图纸设置为该类型。 将计数器变量设置为该类型 例如: Dim x As Integer, FindSlot As Integer Dim CurrentSheet As String, CurrentPropertyNumb As St

我试图编写一个代码,读取多个实体,对它们进行组织和排序。每个实体都有一个a、B、C等类型,这些类型应该决定它放在哪个表中,所有这些类型都放在我的所有表中。每次我找到任何给定类型的实体时,我也想增加一个特定于该类型的变量

如果找到类型并做两件事,我想做什么: 将当前图纸设置为该类型。 将计数器变量设置为该类型

例如:

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实际上计数器中还有一堆打印和格式化语句,我只是没有包括在内。在这个例子中,计数器是无用的,很抱歉误导了你。那么我真的一点也不明白你的问题。。。我唯一能建议的就是试试脚本字典:它可以保存键入任意字符串的值。