我有两个电子表格,一个是名称列,然后是一堆时间列。如果某个人被安排在那个时间段,他们在该列中有一个1。我还有一个计划表,其中包括顶部和时间的日期,需要填充一个名称列表。我试图写一个宏来自动填充它。当特定日期/时间的所有时段都已满时,它工作得很好。星期一早上6点到8点,星期一早上8点到10点都有6个插槽,我运行我的宏,它们完全填满。但是如果星期一早上6点到8点有5人报名而不是6人,那么8-10点的第一个人将在6-8的最后一个位置结束。这是代码:
Sub copytoschedule()
Dim i As Integer
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets(" rawweekdayw")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Weekdays W")
'For Mon 6-8am
For i = 3 To ws1.Cells(ws1.Rows.Count, 2).End(xlUp).Row
Dim rowcount As Integer
rowcount = ws2.Cells(40, 2).End(xlUp).Row + 1
If ws1.Cells(i, 4) = 1 Then ws2.Cells(rowcount, 2).Value = ws1.Cells(i, 2).Value
Next i
'For Mon 8-10am
For i = 3 To ws1.Cells(ws1.Rows.Count, 2).End(xlUp).Row
Dim rowcount2 As Integer
rowcount2 = ws2.Cells(40, 2).End(xlUp).Row + 1
If ws1.Cells(i, 5) = 1 Then ws2.Cells(rowcount2, 2).Value = ws1.Cells(i, 2).Value
Next i
我试图通过用以下代码替换第二个时间段的rowcount变量来解决这个问题:
rowcount2 = max((ws2.Cells(40, 2).End(xlUp).Row + 1),8)
因为该时间段的行从第8行开始。当我尝试运行它时,VBA说它内存不足并且擅长崩溃。帮助?!?