使用数组searchCASE值Excel VBA

我试图从一个单元格内的variables值列表中创build一个数组。

例如:单元格B3包含值:1A,2B,3A,4A,5C。

我想转换的数据,以便:myarray =(“1A”,“2B”,“3A”,“4A”,“5C”)

myarray(1) = "1A" myarray(2) = "2B" myarray(3) = "3A" myarray(4) = "4A" myarray(5) = "5C" 

然后我想使用数组的值来执行一个CASEsearch来编译一个正在运行的testing总数。

我的代码到目前为止:

 'Create subroutine that will copy and total data from worksheet 1 to worksheet 2 Private Sub VTS() 'Establish variable for CASE to search Dim ValR As String 'Establish counter array Dim myarray(1 To 170) myarray(1) = Worksheets(2).Range("A7").Value myarray(2) = Worksheets(2).Range("A10").Value 'Dim valves() As String 'Dim thisValue As String ValR = Worksheets(1).Range("B4").Value 'ValR = Split(valveString, ";") 'valves = ValR 'For v = 1 To UBound(valves) ' thisValve = valves(v) Select Case ValR Case "1A" Worksheets(2).Range("C7").Copy ' Copy current Total Worksheets(2).Range("A7").PasteSpecial ' Move to "Previous Total" to sum total myarray(1) = Worksheets(1).Range("B3").Value - Worksheets(1).Range("B2").Value If myarray(1) < 0 Then myarray(1) = 1000000 + myarray(1) End If Worksheets(2).Range("B7").Value = myarray(1) Worksheets(2).Range("C7").Value = Worksheets(2).Range("A7").Value + Worksheets(2).Range("B7").Value Worksheets(2).Range("C7").Copy Worksheets(1).Range("B10").PasteSpecial Case "1B" Worksheets(2).Range("C10").Copy Worksheets(2).Range("A10").PasteSpecial myarray(2) = Worksheets(1).Range("B3").Value - Worksheets(1).Range("B2").Value If myarray(2) < 0 Then myarray(2) = 1000000 + myarray(2) End If Worksheets(2).Range("B10").Value = myarray(2) Worksheets(2).Range("C10").Value = Worksheets(2).Range("A10").Value + Worksheets(2).Range("B10").Value Worksheets(2).Range("C10").Copy Worksheets(1).Range("B10").PasteSpecial Case Else MsgBox "Wrong Model Entered / Model Does Not Exist" End Select 'Next v End Sub Public Sub Call_VTS() Call VTS End Sub 

总而言之,我希望:

1)从不同的单元格数据构build一个数组

2)其中,每个string表示数组的不同位置

3)然后运行一个CASEsearch数组的每个位置

我一直在挣扎几天。 任何帮助表示赞赏。

对于你的第一个问题,如果单元格B3包含“1A,2B,3A,4A,5C”,那么

 myArray = Split(Range("B3"),", ") 

会给你以下内容:

 myArray(0) = "1A" myArray(1) = "2B" myArray(2) = "3A" myArray(3) = "4A" myArray(4) = "5C" 

如果你想通过数组运行并评估每个项目,为每个循环放置一个你select的案例:

 For Each a In myArray Select Case a Case "1A" Worksheets(2).Range("C7").Copy ' Copy current Total Worksheets(2).Range("A7").PasteSpecial ' Move to "Previous Total" to sum total myarray(1) = Worksheets(1).Range("B3").Value - Worksheets(1).Range("B2").Value If myarray(1) < 0 Then myarray(1) = 1000000 + myarray(1) End If Worksheets(2).Range("B7").Value = myarray(1) Worksheets(2).Range("C7").Value = Worksheets(2).Range("A7").Value + Worksheets(2).Range("B7").Value Worksheets(2).Range("C7").Copy Worksheets(1).Range("B10").PasteSpecial Case "1B" Worksheets(2).Range("C10").Copy Worksheets(2).Range("A10").PasteSpecial myarray(2) = Worksheets(1).Range("B3").Value - Worksheets(1).Range("B2").Value If myarray(2) < 0 Then myarray(2) = 1000000 + myarray(2) End If Worksheets(2).Range("B10").Value = myarray(2) Worksheets(2).Range("C10").Value = Worksheets(2).Range("A10").Value + Worksheets(2).Range("B10").Value Worksheets(2).Range("C10").Copy Worksheets(1).Range("B10").PasteSpecial Case Else MsgBox "Wrong Model Entered / Model Does Not Exist" End Select Next