gpt4 book ai didi

excel - 将单元格粘贴到 VBA 中的另一个工作表

转载 作者:行者123 更新时间:2023-12-04 20:53:48 25 4
gpt4 key购买 nike

我想在 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

关于excel - 将单元格粘贴到 VBA 中的另一个工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52616424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com