【发布时间】:2018-04-08 02:31:36
【问题描述】:
目标:
所以我是 VBA 的新手,正在编写一个快速脚本,试图记录一周内完成的工作小时数。
它通过将 This Week 工作表中第 27 行中包含的每天完成的工作小时数从 B 列(星期一)复制到 G 列(星期六)并将该信息粘贴到 @987654322 @工作表从 B 列开始,一直到 G 列。
我想这样做,以便即使在我更改了下周的 This week 工作表之后,我也可以永久记录完成的小时数。
所以我尝试编写此脚本,以便如果它看到上面的行充满信息,它会尝试下面的行。
这将产生一个永久的、按时间顺序(每周开始一个新行)的记录,记录每周每天完成的小时数。
我会在一周结束前运行此程序,然后再清除下周的日程安排。
代码:
Sub Hours()
Dim i As Integer
Dim j As Integer
Dim hoursdone As Long
j = 0
For i = 2 To 7
hoursdone = Worksheets("This Week").Cells(27, i).Value
Do While Worksheets("Hours").Cells(j, i).Value <> Empty
j = j + 1
Loop
Worksheets("Hours").Cells(i, j) = hoursdone
Next i
End Sub
我不断收到的错误:
Application-defined or object-defined error
当我点击Debug 时,它会将我带到Line 9,但我不知道出了什么问题?
谢谢
PS:我想最终将这个东西绑定到我的This week工作表中的一个按钮上,记录数据,让我清除This week
【问题讨论】:
-
Do While Worksheets("Hours").Cells(j, i).Value ""
-
空是一个有效的条件。在即时窗口中尝试
?activecell = empty。 -
有点奇怪的是,您将行数设置为整数,但允许某人工作 长时间 小时。