【发布时间】:2021-09-06 10:20:44
【问题描述】:
我正在努力使我的代码更好,所以我要做的第一件事是从我的代码中删除所有选择和选择的使用。
我面临的问题是如果不使用 Selection,我将无法获得稳定的代码。 用于进行选择的 PFB 代码
Sub findandCopyVisbleCellsinColumn(ByRef wb As Workbook, ByRef ws As Worksheet, ByRef columnNumber As Long)
Dim lrow, lcolumn As Long
With wb
With ws
ws.Activate
Selection.End(xlToLeft).Select
ws.Range(Cells(1, columnNumber).Address).Offset(1, 0).Select
ws.Range(Selection, Selection.End(xlDown)).Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
End With
End With
End Sub
PFB 代码用于调用上述代码并粘贴值
emptyCell = range_End_Method(wb, ws, 3)
Call findandCopyVisbleCellsinColumn(wb, ws1, 7)
ws.Range("C" & emptyCell).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
到目前为止我做了什么
With ws
ws.Activate
Selection.End(xlToLeft).Select
lrow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
lcolumn = ws.Cells(1, ws1.Columns.Count).End(xlToLeft).Column
.Range(.Cells(.Cells(2, columnNumber).Address).Offset(1, 0), lrow, lcolumn).Copy
End With
这给出了无效属性分配的错误。我怀疑这是由于将单元格分配给单元格,请指出正确的方向。
提前致谢。
【问题讨论】:
-
A
Selection始终只是Range- 您可以通过单独使用 Range 来避免选择 - 也适用于复制和粘贴。 -
PFB是什么意思?
-
@Darren 不确定,但我怀疑“请在下面查找”。 OP 本可以将其排除在外。
-
@TomBrunberg 这就是我的想法,但也可能是您伸出舌头并吹气时发出的声音(或者那是 pffffft)。我总是询问缩写词以避免混淆。
-
这能回答你的问题吗? VBA - copy filtered range without select