excel - MS VB 从一个工作表复制到另一个带有空单元格的工作表
问题描述
我的 Excel 工作表有一个 MS Visual Basic 宏,我有一个子工作簿和一个父工作簿。我想将子工作表“帐户”中的单元格复制到父工作表“帐户”中。子工作表中的单元格有一些空白单元格,目前使用此代码,它停在空白单元格处,我希望它错过空白单元格并转到下一个带有值的单元格,然后继续复制。
Sub Button1_Click()
'Field Name
Windows("childsheet.xlsm").Activate
Range("A3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("parentsheet.xlsm").Activate
Range("A3").Select
ActiveSheet.Paste
'API Name
Windows("childsheet.xlsm").Activate
Range("B3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("parentsheet.xlsm").Activate
Range("B3").Select
ActiveSheet.Paste
'Type
Windows("childsheet.xlsm").Activate
Range("C3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("parentsheet.xlsm").Activate
Range("C3").Select
ActiveSheet.Paste
'Length
Windows("childsheet.xlsm").Activate
Range("D3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("parentsheet.xlsm").Activate
Range("D3").Select
ActiveSheet.Paste
'Required
Windows("childsheet.xlsm").Activate
Range("E3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("parentsheet.xlsm").Activate
Range("E3").Select
ActiveSheet.Paste
'Read Only?
Windows("childsheet.xlsm").Activate
Range("F3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("parentsheet.xlsm").Activate
Range("F3").Select
ActiveSheet.Paste
End Sub
有用。它复制我指定的每一列,但是当它到达具有空单元格的列时,它会复制任何信息。在该单元格中从上到下,但如果遇到空白,它会停在那里,然后移动到下一列。我希望它复制所有信息。
解决方案
代替
Windows("childsheet.xlsm").Activate
Range("A3").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("parentsheet.xlsm").Activate
Range("A3").Select
ActiveSheet.Paste
使用类似的东西
With Workbooks("childsheet.xlsm").ActiveSheet
.Range("A3", .Cells(.Rows.Count, "A").End(xlUp)).Copy Destination:=Workbooks("parentsheet.xlsm").ActiveSheet.Range("A3")
.Range("B3", .Cells(.Rows.Count, "B").End(xlUp)).Copy Destination:=Workbooks("parentsheet.xlsm").ActiveSheet.Range("B3")
'… and so on …
End With
进一步的改进是.ActiveSheet
用工作表名称替换,.Worksheets("YourSheetName")
这样您的代码就更可靠了。
推荐阅读
- docker - kubectl exec 因 TLS 握手错误而失败
- assembly - 如何在 8086 中编写具有优先级的 PDP11 样式的硬件中断?
- android-studio - 无法解析 Android Studio 中的模块类
- c# - 我可以循环通过 Fluent API 中的类/模型名称来配置实体框架中的实体吗?
- angular - 了解评估参考
- javascript - 如何判断 Vue 组件是否处于活动状态
- python - 在 Django 模型中重构表
- nlp - 如何计算出序列中下一个最可能的字母,自然语言处理
- c - 如果所有条件都为真,则做某事
- spring-boot - java spring boot 应用程序无法将 zipkin 跟踪信息传递给 rabbitmq