我对VBA非常陌生(~4天新),我尝试用我通常的方法来解决这个问题,通过阅读大量关于这类资源的不同文章并进行实验,但还没有完全掌握它的窍门。我希望你们愿意指出我在这方面的错误。我已经看了很多(所有?)这些线程都有类似的问题,但我还不能从中为自己拼凑出一个解决方案。我希望你能原谅这一点,如果它已经在其他地方得到了回答。
背景:
我有一个电子表格,其中第5-713行中的项目向下列B(合并到单元格J),其中每个日期(列K-SP)的项目得分为1或0。我的目标是在工作表底部创建一个列表,其中包含从1到0的所有项目。首先,我尝试使用“生成列表”按钮将所有行中的0复制到底部,我想我以后会调整它来做我想做的事。我试过几种方法,但都有不同的错误。
Worksheet Sample
来看看我在说什么。
我经历了几次不同的尝试,每次都取得了有限的成功,通常每次都会出现不同的错误。我遇到过“对象范围的方法”失败、“需要对象”、“类型不匹配”、“内存不足”以及其他一些问题。我肯定我只是没有掌握一些基本语法,这导致了一些问题。
这是最新的一批代码,给出了错误“类型不匹配”。我也尝试过将“todo”设置为字符串,但它只会弹出“objectrequired”
Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim y As Integer, z As Integer, todo As Range
Set todo = ThisWorkbook.ActiveSheet.Range(Cells(5, 2), Cells(713, 510))
y = 5
z = 714
With todo
Do
If todo.Rows(y).Value = 0 Then
todo.Copy Range(Cells(z, 2))
y = y + 1
z = z + 1
End If
Loop Until y = 708
End With
Application.ScreenUpdating = True
End Sub
另一个我认为有希望的尝试是下面的,但它让我“记忆不足”。
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim y As Integer, z As Integer
y = 5
z = 714
Do
If Range("By:SPy").Value = 0 Then
Range("By:SPy").Copy Range("Bz")
y = y + 1
z = z + 1
End If
Loop Until y = 708
Application.ScreenUpdating = True
End Sub
如果您能帮助我们找到第一步,甚至是如何让它扫描从1变为0,我们将不胜感激。我肯定我错过了一些简单的东西,希望你们能原谅我的无知。
谢谢