我尝试编写一个宏来复制表单中的数据,然后打开一个单独的工作簿并将数据粘贴到下一个空行中。用户可以填写21行信息,但实际填写的行数每天都会有所不同。
以下代码的作用是,当粘贴到目标工作簿时,空白单元格被视为包含数据。所以我最终在每个数据转储之间有几个空行。
如何更改此代码以复制第5行 - 第25行范围内包含#34; I"中的文本的所有行?但是忽略列#34中的任何空行;我"?
Sub Export_Data()
Dim owb As Workbook
Dim sh As Worksheet
Set sh = Sheet1
sh.Range("A5:K25").Copy
Set owb = Workbooks.Open("my_destination_workbook")
owb.Sheets("Sheet1").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
owb.Close True
End Sub
答案 0 :(得分:0)
我采用For循环方法来查看A列中的值并跳过空值。有很多方法可以解决这个问题,这只是一个。
Sub Export_Data()
Dim owb As Workbook
Dim sh As Worksheet
Dim sRange as Range
Dim i as Long
Set sh = Sheet1
Set owb = Workbooks.Open("my_destination_workbook")
For i = 5 to 25 Step + 1 'from 5 to 25 because you are checking A5:K25
'If "A & i" has a value, copy A to Z and paste it at the end on the new workbook
If sh.Range("A" & i).Value <> 0 Then
sh.Range("A" & i & ":K" & i).Copy
owb.Sheets("Sheet1").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
End If
Next
owb.Close True
End Sub
答案 1 :(得分:-1)
感谢里卡多A
你的代码可以循环遍历所有内容,但不幸的是它仍然在拾取空行。我做了一些改动并改变了
If sh.Range("A" & i).Value <> 0 Then
到
If sh.Range("A" & i).Value <> "" Then
现在它只复制具有输入第I列的值的行。 因此,以下代码现在可以复制第一列中包含值的所有行,然后打开一个新工作簿并将复制的行粘贴到下一个空行中。
Sub Export_Data()
Dim owb As Workbook
Dim sh As Worksheet
Set sh = Sheet1
Set owb = Workbooks.Open("my_destination_workbook")
For i = 5 To 25 Step 1
If sh.Range("A" & i).Value <> "" Then
sh.Range("A" & i & ":K" & i).Copy
owb.Sheets("Sheet1").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
End If
Next
owb.Close True
End Sub