excel - 将单元格粘贴到 VBA 中的另一个工作表
问题描述
我想在 VBA 的工作表中粘贴单元格。在下面的代码中,我首先选择单元格区域,然后粘贴到另一个工作表。但它运行错误'9“:下标超出范围。我认为问题出在复制和粘贴的最后一行。这是我的代码:
Sub MatchFRB()
' find last row and column
Dim LastRow As Long
Dim LastColumn As Long
Dim StartCell As Range
Set StartCell = Range("A1")
LastRow = Sheet22.Cells(Sheet22.Rows.Count, StartCell.Column).End(xlUp).Row
LastColumn = Sheet22.Cells(StartCell.Row, Sheet22.Columns.Count).End(xlToLeft).Column
' Select cells until meets Threshold=5000000000
Dim i As Integer
Dim Bal As Double
Threshold = 0
For i = 2 To LastRow
Bal = Threshold + Range("AV" & i)
If Threshold > 5000000000# Then
Exit For
End If
Next i
' copy cells from Sheet22 and paste to Sheet21
Sheet22.Range(StartCell, Sheet22.Cells(i, LastColumn)).Copy Worksheets("Sheet21").Range(StartCell, Sheet21.Cells(i, LastColumn))
End Sub
非常感谢!
解决方案
您必须正确调用您的工作表。VBA 不只接受工作表的名称作为对象。您必须使用 引用工作表Worksheets("Sheet22")
,另一种选择是将对象设置为:
Dim ws as object
set ws = Thisworkbook.Worksheets("Sheet22")
通过这种方式,VBA 知道您需要宏所在书中的 Sheet22;否则,您可以使用Workbooks("YourWorkBookName").WorkSheets("SheetName")
.
从那里您可以ws.Range
像使用Sheet22
. 同样,StartCell
可能是一个范围,但它只对活动工作表起作用,因此将它引用到某个工作表和/或书籍也不是一个坏主意。但在这种情况下,我把它省略了,因为它总是这样A1
,而且很容易进入。
稍后在您的代码中尝试计算余额时,您还必须.Value
在调用范围后使用,以便实际访问存储在单元格中的数字。但是,如果您要检查的是阈值,则应该将其添加threshold
回自身。但是,我选择只Bal
在这种情况下使用,因为它对我来说更有意义。
Sub MatchFRB()
' find last row and column
Dim LastRow As Long
Dim LastColumn As Long
Dim ws as object
Dim i As Integer
Dim Bal As Double
set ws = Thisworkbook.Worksheets("Sheet22")
LastRow = ws.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
LastColumn = ws.Cells.Find("*", searchorder:=xlByColumns, searchdirection:=xlPrevious).Column
' Select cells until meets Threshold=5000000000
Bal = 0
For i = 2 To LastRow
Bal = Bal + ws.Range("AV" & i).Value
If Bal >= 5000000000 Then
Exit For
End If
Next i
' copy cells from Sheet22 and paste to Sheet21
ws.Range("A1:" & Cells(i, LastColumn).Address).Copy Worksheets("Sheet21").Range("A1:", Cells(i, LastColumn).address)
End Sub
推荐阅读
- javascript - 如何在具有相似性的节点之间创建边
- web2py - 默认 orderby 列类型为日期时的网格排序错误。还有其他人有这个问题吗?
- javascript - 未定义声明的异步函数?
- android - 谷歌地图 API 密钥不适用于所有环境
- batch-file - 如果名称会更改,可以在 ms dos 中重命名文件夹吗?
- terraform - 如何让多个提供者依赖于环境?
- java - Maven多模块子pom版本
- codenameone - 在 Codename One GlassPane 中绘制曲线以制作箭头
- asp.net - 试图设置背景图像,但 div id 名称没有显示在后面的代码中,我做错了什么?
- python - 在读取函数代码之前,如何从输入中运行函数?