我对 VBA 很陌生,所以下面的问题应该不会太难。但是由于我花了大约一个半小时来编写代码,我想我只是缺乏一些基本的了解它应该是什么样子,所以我认为值得在这里发布它。
代码所做的基本上是将值从一个工作表中的一个范围复制到包含某种计划的同一活动工作簿中的另一个工作表中的另一个范围。
在本节中的循环的第一次运行中,我已经收到“运行时错误'9'下标超出范围”错误消息
'Subject
Morning = Worksheets("ExamSchedule").Cells(Weeknr + 2, Day)
我在一个空白工作簿中尝试了代码,所以错误不应该是由于格式化(如果这可能是原因)。但是,如果您需要有关上下文等的更多信息,我当然可以提供更多详细信息。
谢谢您的回答!
帕特里克
Sub SetData_new()
' SubModule to copy the data from 'Master_Plan' to particular sheets
Dim CurrWS As Long, StartWS As Long, EndWS As Long
StartWS = Sheets("W_1").Index
EndWS = Sheets("L_1").Index
Dim Weeknr As Integer
Weeknr = 5
Dim Day As Long
Dim Morning As Range, Afternoon As Range, Noon As Range
For CurrWS = StartWS To EndWS
'Set updated ranges
Set Morning = Worksheets(CurrWS).Cells(4, 4)
Set Afternoon = Worksheets(CurrWS).Cells(8, 4)
Set Noon = Worksheets(CurrWS).Cells(12, 4)
For Day = 3 To 21 Step 3
'Subject
Morning = Worksheets("ExamSchedule").Cells(Weeknr + 2, Day)
Afternoon = Worksheets("ExamSchedule").Cells(Weeknr + 4, Day)
Noon = Worksheets("ExamSchedule").Cells(Weeknr + 6, Day)
'Category
Morning.Offset(0, 1) = Worksheets("ExamSchedule").Cells(Weeknr + 2, Day + 1)
Afternoon.Offset(0, 1).Value = Worksheets("ExamSchedule").Cells(Weeknr + 4, Day + 1)
Noon.Offset(0, 1).Value = Worksheets("ExamSchedule").Cells(Weeknr + 6, Day + 1)
'Type
Morning.Offset(0, 2) = Worksheets("ExamSchedule").Cells(Weeknr + 2, Day + 2)
Afternoon.Offset(0, 2).Value = Worksheets("ExamSchedule").Cells(Weeknr + 4, Day + 2)
Noon.Offset(0, 2).Value = Worksheets("ExamSchedule").Cells(Weeknr + 6, Day + 2)
'Specifications
Morning.Offset(0, 3) = Worksheets("ExamSchedule").Cells(Weeknr + 3, Day)
Afternoon.Offset(0, 3).Value = Worksheets("ExamSchedule").Cells(Weeknr + 5, Day)
Noon.Offset(0, 3).Value = Worksheets("ExamSchedule").Cells(Weeknr + 7, Day)
'Increment
Morning = Morning.Offset(12, 0)
Afternoon = Afternoon.Offset(12, 0)
Noon = Noon.Offset(12, 0)
Next Day
Wochennummer = Wochennummer + 9
Next CurrWS
Worksheets("ExamSchedule").Activate
End Sub