我怎么能把这个块变成一个循环?

时间:2017-05-02 19:49:43

标签: excel vba

我认为我要做的就是创建一个包含Jan,Feb,Mar等的列表,另一个包含E和P之间的字母。但是,我在设置时仍然很糟糕向上循环,出于恐惧,我倾向于写很长的路(因为它有许多不必要的线)。有关如何设置的任何建议吗?

JanGroup = MEPF.Sheets("Group NBD-AP Goals").Range("E57").Value
FebGroup = MEPF.Sheets("Group NBD-AP Goals").Range("F57").Value
MarGroup = MEPF.Sheets("Group NBD-AP Goals").Range("G57").Value
AprGroup = MEPF.Sheets("Group NBD-AP Goals").Range("H57").Value
MayGroup = MEPF.Sheets("Group NBD-AP Goals").Range("I57").Value
JunGroup = MEPF.Sheets("Group NBD-AP Goals").Range("J57").Value
JulGroup = MEPF.Sheets("Group NBD-AP Goals").Range("K57").Value
AugGroup = MEPF.Sheets("Group NBD-AP Goals").Range("L57").Value
SepGroup = MEPF.Sheets("Group NBD-AP Goals").Range("M57").Value
OctGroup = MEPF.Sheets("Group NBD-AP Goals").Range("N57").Value
NovGroup = MEPF.Sheets("Group NBD-AP Goals").Range("O57").Value
DecGroup = MEPF.Sheets("Group NBD-AP Goals").Range("P57").Value

2 个答案:

答案 0 :(得分:1)

如果您要使用以下代码:

Dim MthGroup As Variant
MthGroup = Application.Transpose(Application.Transpose(MEPF.Sheets("Group NBD-AP Goals").Range("E57:P57")))

然后,您可以使用MthGroup(1)代替JanGroupMthGroup(2)代替FebGroup等来访问您的变量。

(两个Transpose命令用于将数据从二维1 To 1, 1 To 12数组转换为一维1 To 12数组。)

将数据放在数组中然后允许您在代码中的其他位置使用循环,例如:

Dim mth As Long
For mth = 1 To 12
    MsgBox "Data for " & MonthName(mth) & " is " & MthGroup(mth) 
Next

答案 1 :(得分:1)

这是一个可能的代码,可以解决您的一些问题,并可能向您展示如何继续执行任务:

Option Explicit

Public Sub TestMe()

    Dim rngCell             As Range
    Dim lngCounter          As Long
    Dim myArray(12)         As Long

    Set rngCell = Cells(57, 5) 'That is E57
    For lngCounter = 0 To 11

        Set rngCell = rngCell.Offset(0, 1)
        rngCell = lngCounter
        myArray(lngCounter) = rngCell.Value

    Next lngCounter

    For lngCounter = LBound(myArray) To UBound(myArray)
        Debug.Print myArray(lngCounter)
    Next lngCounter

End Sub

通常,我们将单元格(57,5)设置为rngCell,我们将从E57到P57的所有单元格写入0到11之间的数字。因此,您可以看到如何完成此操作。此外,我们创建了一个名为myArray的数组,其中包含12个位置。在每个循环中,我们向数组添加一个值 - myArray(lngCounter) = rngCell.Value。我添加了第二个循环,因此您可以看到如何遍历此数组。它将数组的值打印到即时窗口。干杯!