我正在开发一些VBA,它旨在为Excel中的学生循环使用Schedule Builder。我在分配c = c.Offset(X, 0)
期间一直收到错误424,但仅在嵌套的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。基本上是Dim d As (Something)
后跟d = c
。我似乎无法找到分配给d的正确对象,因此我可以将其设为c。再次感谢。
答案 0 :(得分: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)
但正如我所说,我不知道完整的逻辑,因此这是您所遇到的错误的解决方案,但不确定它是否能解决您的所有问题。