Arrays 通过if语句的字符串数组隐式引用变量名?
我试图做的是使用if语句将指定的值与一长串变量进行比较。我想隐式引用if语句的变量名(以及进一步的处理),这样我就不必做20多个if语句。这是我的代码,我得到一个类型不匹配Arrays 通过if语句的字符串数组隐式引用变量名?,arrays,excel,vba,if-statement,type-mismatch,Arrays,Excel,Vba,If Statement,Type Mismatch,我试图做的是使用if语句将指定的值与一长串变量进行比较。我想隐式引用if语句的变量名(以及进一步的处理),这样我就不必做20多个if语句。这是我的代码,我得到一个类型不匹配 Public iFPYCol As Long Public iTimeCol As Long Public iBrgPosCol As Long Public iBrgPosFailCol As Long Public iDisLoadCol As Long Public iDisLoadFailCol As Long Pu
Public iFPYCol As Long
Public iTimeCol As Long
Public iBrgPosCol As Long
Public iBrgPosFailCol As Long
Public iDisLoadCol As Long
Public iDisLoadFailCol As Long
Public iMaxBrgLoadCol As Long
Public iBrgMaxLoadFailCol As Long
Public iBrgTravelCol As Long
Public iTravelFailCol As Long
Public iPlateLoadCol As Long
Public iPlateLoadFailCol As Long
Public iDepartureCol As Long
Public iDepartureFailCol As Long
Public iPlaneCol As Long
Public iPlaneFailCol As Long
Public iCamIndexFailCol As Long
Public iCycInterruptCol As Long
Public iCamAssistCol As Long
Public iCamAssistFailCol As Long
Public iCoverNoCol As Long
Sub Main()
'unrelated code
sNothing = IncrementColNum(iBrgPosFailCol, 2)
'unrelated code
End Sub
Function IncrementColNum(iCol As Long, iNum As Long) As String
Dim arrVariables() As String
arrVariables = Split("iFPYCol,iBrgPosCol,iBrgPosFailCol,iDisLoadCol,iDisLoadFailCol,iMaxBrgLoadCol,iBrgMaxLoadFailCol,iBrgTravelCol,iTravelFailCol,iPlateLoadCol,iPlateLoadFailCol,iDepartureCol,iDepartureFailCol,iPlaneCol,iPlaneFailCol,iCamIndexFailCol,iCycInterruptCol,iCamAssistCol,iCamAssistFailCol,iCoverNoCol,iTimeCol", ",")
For iCounter = 1 To UBound(arrVariables)
If arrVariables(iCounter) >= iCol Then
arrVariables(iCounter) = arrVariables(iCounter) + iNum
End If
Next iCounter
'Return Nothing
IncrementColNum = "Nothing"
End Function
类型不匹配是因为my array和iCol是不同的类型。问题是我不想将arrviables(iCounter)
与iCol
进行比较,我想将名为arrviables(iCounter)
的变量的值与iCol
进行比较
我在函数中有它,因为我要做很多次;我查了一下如何让函数不返回任何内容,但VBA似乎不可能这样做。
arrVariables(1)
是“iFPYCol.”,iCol
是一个数字。你只想检查iCounter>=iCol
?我知道arrVariables(I)(其中I`是任何值),永远不会返回数字…所以只需检查计数器?我可能会误解…创建一个Long
s数组来存储您的所有值如何。您可以设置一个(大)将Const
设置为数组索引,以访问该数组中的特定值,甚至是索引和字符串的字典。然后可以循环遍历数组中的所有索引,以进行更快的比较。@BruceWayne我想将iFPYCol
的值与iCol的值进行比较。它们都是Long类型e> 。我尝试使用数组来引用每个变量名,而不是使用20多个单独的If
语句。@PeterT-Hmm,我从来没有听说过Const
或discitionary
,所以我必须研究一下。这可能是最简单的方法。哦,我想我明白你的意思了。但是我看不到任何地方您分配iFPYcol
一个值。我假设它被设置为类似iFPYcol=[some number]
?arrVariables(1)
是“iFPYcol”。iCol是一个数字。是否只想检查iCounter>=iCol
?我知道,arrviables(I)(其中
I`是任何值)永远不会返回数字…所以只需检查计数器就可以了?我可能误解了……创建一个Long
s数组来存储所有值怎么样。您可以将一组(大)的Const
设置为数组索引,以访问该数组中的特定值,甚至是索引和字符串的字典。然后,您可以循环遍历数组的所有索引,以进行更快的比较。@BruceWayne我想将iFPYCol
的值与iCol的值进行比较。它们都是类型Long
。我尝试使用数组来引用每个变量名,而不是使用20多个独立的If
语句。@PeterT-Hmm,我从来没有听说过Const
或discitionary
,所以我必须研究一下。这可能是最简单的方法。哦,我想我明白你的意思了。但是,我看不到在任何地方分配iFPYcol
值。我假设它被设置为类似于iFPYCol=[some number]
?