我是VBA (一般编码)的完全初学者,所以在下面对糟糕的编码表示歉意--我试图循环复制从一个工作表到另一个工作表,条件是它复制到的单元格依赖于它旁边的右边列而不是空的。如果为空,则循环应停止。
将守则更新如下:
Public Sub emptycell()
Dim Conditionalcol As Integer 'this is dependant on the 'column' of names
Conditionalcol = 4
Dim Projectrow As Integer 'row empty for project name
Projectrow = 4
Dim Projectdowncell As String 'move down cell for project name pasting
Projectdowncell = 1
Dim projectcellright As Integer 'move cell right 1 down for project name copying
projectcellright = 5
Do While Sheets("Datacopied").Cells(Conditionalcol, 3) <> "" 'this is the condition to stop at empty cell
a = Cells(Conditionalcol, 1)
'copy and paste as per below'
Sheets("Dataneeded").Cells(projectcellright, 2) _
.Copy Destination:=Sheets("datacopied").Range("B3") _
.Offset(Projectdowncell, 0)
Projectdowncell = Projectdowncell + 1
projectcellright = projectcellright + 1
Conditionalcol = Conditionalcol + 1
Loop
End Sub
当满足条件时,它将正确停止,但是我希望它复制C列中相同次数的单元格,直到单元格为空为止。相反,它将有关A1的测试1到4复制到A4。有什么帮助吗? 1:https://i.stack.imgur.com/ja4Cr.png 2:https://i.stack.imgur.com/BU2Tw.png
发布于 2022-09-29 08:42:54
我只是在这里做了简单的样本。也许这会更有帮助。
在同一个工作簿上,另一个工作表的名称是“复制”。这张表是我们传送数据的地方。
首先,我将计算数据页上的行数。然后,我将把数据从数据页传输到复制页面。
Sub copy()
Dim i As Long
Dim ws_data As Worksheet
Dim ws_copy As Worksheet
Dim num_of_rows As Long
Set ws_data = ThisWorkbook.Worksheets("data")
Set ws_copy = ThisWorkbook.Worksheets("copy")
' Here I am counting number of the rows in data page
i = 1
Do While ws_data.Cells(i, 1) <> ""
i = i + 1
Loop
num_of_rows = i - 1
MsgBox (num_of_rows)
'and i will transfer the data from data page to copy page
For i = 1 To num_of_rows
ws_copy.Cells(i, 1) = ws_data.Cells(i, 1)
ws_copy.Cells(i, 2) = ws_data.Cells(i, 2)
Next i
End Sub
发布于 2022-09-28 02:49:37
这是一种非常有用的方法,只需做一些更改。
do while cells(i,1) <> "" #(this is the condition to stop at empty cell)
a=cells(i,1)
i=i+1
Loop
https://stackoverflow.com/questions/73879942
复制相似问题