Excel 将变量名设为变量

Excel 将变量名设为变量,excel,vba,variables,Excel,Vba,Variables,我有一个变量“jobNo”,它根据用户输入在1和5之间变化。我还有另外5个变量:“J1C”,“J2C”,“J3C” 如何将变量“jobNo”放入其他5个变量中,以便在jobNo=3时,我可以说: J3C=0 我试过: “J”&作业编号和“C”=0 但是会出现错误。我该怎么做呢?我的建议与@simoco评论的相同。使用数组: Dim JC(1 to 5) As Double JC(1) = 0 JC(2) = 0 JC(3) = 0 JC(4) = 0 JC(5) = 0 你真的应该使用数组,不

我有一个变量“jobNo”,它根据用户输入在1和5之间变化。我还有另外5个变量:“J1C”,“J2C”,“J3C”

如何将变量“jobNo”放入其他5个变量中,以便在jobNo=3时,我可以说:

J3C=0

我试过: “J”&作业编号和“C”=0


但是会出现错误。我该怎么做呢?

我的建议与@simoco评论的相同。使用
数组

Dim JC(1 to 5) As Double
JC(1) = 0
JC(2) = 0
JC(3) = 0
JC(4) = 0
JC(5) = 0

你真的应该使用数组,不这样做,在这种情况下,是非常糟糕的编程

但如果无法更改所有内容,则可以创建以下内容:

Sub VBP(jobNo, J1C, J2C, J3C, J4C, J5C)
Select Case jobNo
 Case 1
  J1C = 0
 Case 2
  J2C = 0
 Case 3
  J3C = 0
 Case 4
  J4C = 0
 Case 5
  J5C = 0
End Select
End Sub
然后这样称呼它:

VBP jobNo, J1C, J2C, J3C, J4C, J5C

主要是因为我讨厌vba
数组
你可以使用
集合
对象

Dim jobNos As New Collection
Sub intializejobNos
    With jobNos
       .Add 0, "J1C"
       .Add 0, "J2C"
       .Add 0, "J3C"
       .Add 0, "J4C"
       .Add 0, "J5C"
   End With
End Sub

Sub changeJobNo(jobNo As String, val AS Variant)
OnError GoTo Handler
    With jobNos  
        .Remove jobNo
        .Add val, jobNo
    End With
Exit_changeJobNo: 
    Exit Sub
Handler: 
   Msgbox "Job Number " & jobNo & " Does not exist in the collection."
   GoTo Exit_changeJobNo
End Sub

Sub addJobNo(jobNo As Integer, val AS Variant)
   jobNos.Add val, "J" & jobNo & "C"
End Sub
通过这种方式,您可以初始化
作业编号
集合
,该集合将具有完全可变的大小,而无需
重拨
,然后您可以根据需要更改值,然后您可以使用所需的动态功能,即

Function getJobNo(jobNo AS Integer) As Variant
   If jobNos.Count = 0 Then
     initializejobNos
   End If
   getJobNo = jobNos("J" & jobNo & "C")
End Function

显然,应该进行一些额外的错误处理,但我发现
Collection
对象比使用本机VBA
Array
s简单得多

改用数组:
JC(jobNo)=0
有没有类似于我文章中显示的方法?我这样问是因为如果我将其更改为数组,我必须检查所有代码并替换它,因为有许多类似的变量,所以我不能简单地使用“替换”按钮。@user3508196据我所知,
VBA
不支持这种功能。谢谢你的帮助,我只是很懒,现在已经更改了:)对,把事情复杂化到极致的方法…如果你能用数组更快地完成,并且写得更少。。。这是一条路要走…sudo…不要过度复杂化扩展,但感谢您的评论。我相信设计一些尽可能可扩展的东西,这就是我所做的,当他将来想要动态地添加或删除作业时会发生的事情。我已经删除了我的评论,因为它似乎已经极大地冒犯了你:(你必须认识到,这不是一个票价评论:)没有恶意。我完全同意,收藏品的用途非常广泛。我只是为这个特殊的案子说话。数组的速度将快几百倍,代码也将更少。我认为我们把OP问题复杂化了。。。也许我们都是对的:)