0

我正在研究一些 VBA,旨在为用 Excel 制作的学生循环一个 Schedule Builder。在 assignments 期间我不断收到错误 424 c = c.Offset(X, 0),但仅在嵌套的 For 循环中。范围是否有限,如果有,我该如何克服?

下面是代码:

    Public Sub generateRosters()

    Worksheets("Course Rosters").Cells.ClearContents
    Worksheets("Course Rosters").Range("A1") = "Course"
    Worksheets("Course Rosters").Range("B1") = "Room"

    Dim classTitleRange As Range
    Set classTitleRange = Worksheets("Master School Schedule").Range("D1:BN1")

    Dim rowCount As Integer
    rowCount = 2

    Dim periodArr(1 To 8) As String
    periodArr(1) = "A"
    periodArr(2) = "B"
    periodArr(3) = "C"
    periodArr(4) = "D"
    periodArr(5) = "E"
    periodArr(6) = "F"
    periodArr(7) = "G"
    periodArr(8) = "Z"

    For Each c In classTitleRange.Cells

        Dim courseTitle As String
        courseTitle = c

        c = c.Offset(2, 0)

        Dim room As String
        room = c

        For Each p In periodArr()

            Dim offsetCount As Integer
            offsetCount = 0

            For i = 1 To 340
                c = c.Offset(1, 0) '424 Error One
                If c = p Then

                End If
                offsetCount = offsetCount + 1
            Next

            c = c.Offset(-offsetCount, 0) '424 Error Two

        Next

        Worksheets("Course Rosters").Range("A" & rowCount) = "'" & courseTitle
        Worksheets("Course Rosters").Range("B" & rowCount) = room

        rowCount = rowCount + 1

    Next

    End Sub

谢谢你的帮助。

编辑:附带问题,有没有办法让我创建一个我可以像 c 一样操作的变量,但不是 c。基本上 aDim d As (Something)后跟d = c. 我似乎找不到分配给 d 的正确对象,因此我可以将其设为 c。再次感谢。

4

1 回答 1

1

我不了解您的代码的逻辑和目标,因此只有一些提示给您:

c=c.offset(2,0)

将初始值更改Range type c variable为空或任何其他值。接下来,您尝试使用与c variable不允许的范围对象相同的错误。

您可能需要的是Set instruction以下几行:

Set c= c.offset(2,0)
'....
Set c= c.offset(1,0)

但正如我所说,我不知道完整的逻辑,因此这是您所遇到错误的解决方案,但不确定它是否能解决您的所有问题。

于 2013-07-08T16:44:50.670 回答