gpt4 book ai didi

VBA - Do While 循环嵌套在 For 循环中;应用程序定义或对象定义的错误

转载 作者:行者123 更新时间:2023-12-04 21:53:29 25 4
gpt4 key购买 nike

目标:

所以我是 VBA 的新手,正在编写一个快速脚本,试图记录一周内完成的工作时间。

它通过将第 27 行中包含的每天完成的工作小时数从 This Week 工作表的 B 列(星期一)复制到 G 列(星期六),并将该信息粘贴到从 B 列开始的 Hours 工作表中,然后沿着 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:我想最终把这个东西绑定(bind)到我的 This week 表中的一个按钮上,记录数据,让我清除 This week

最佳答案

那是因为 j开始于号码 0 .你不能有Cells(0, 2) ,行从数字 1 开始。

更改j = 0j = 1 ,并将其移动到您的 For...Next 中陈述。

For i = 2 To 7

j = 1
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

如果不移动 j = 1在您的 For 语句中,那么下一次迭代 j 将是它在您的 Do...loop 中时停止的位置。 .

关于VBA - Do While 循环嵌套在 For 循环中;应用程序定义或对象定义的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49710605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com