Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 通过if语句的字符串数组隐式引用变量名?_Arrays_Excel_Vba_If Statement_Type Mismatch - Fatal编程技术网

Arrays 通过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

我试图做的是使用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
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]