我正在尝试减少对select的使用。我一直在参考下面的文章,但是我不确定如何在这种情况下实现它。为了练习,我使用下面的工作代码集,用于复制B1中的值,并将其粘贴到A列中填充的尽可能多的行中。如果有人可以指导我如何避免这种不良习惯,以便编写更多内容有效的代码,我将不胜感激!
How to avoid using Select in Excel VBA
Range("B1").Select
Selection.Copy
ActiveCell.Offset(0, -1).Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Range(Selection, "B1").Select
ActiveSheet.Paste
答案 0 :(得分:4)
所有这些代码都可以翻译为:
Range("B1:B" & Cells(Rows.Count, "A").End(xlUp).Row).Value = Range("B1").Value
我们正在创建Range
至B1
的{{1}}单元格,以及B
列中最后一行的单元格(我们使用A
)等于单元格Cells(Rows.Count, "A").End(xlUp).Row
中的值。
答案 1 :(得分:3)
其他人为您的代码提供了直接的解决方案。但是对于您在如何避免“选择”方面受到“指导”的问题,这就是正在发生的事情……
考虑。选择作为存储对其附加内容的引用。
Range("B1").Select
表示存储对范围:B1的引用。
Selection.Copy
是说使用该引用,然后调用“复制”功能
您可以直接访问它,而不必使用参考。
Range("B1").Copy
现在,由于您进行复制和粘贴,因此您有两个不同的引用,即您的来源和目的地。因此,您可以将值直接从源应用到目标,而无需调用复制和粘贴功能。
Range(<DestinationRange>).value = Range(<SourceRange>).value
offset函数只是说从指定的范围开始,然后移动到指定数量的列或行,然后使用此单元格作为参考。
答案 2 :(得分:0)
您可以这样做:
package.json