避免通过复制和粘贴VBA选择

时间:2018-07-18 15:24:36

标签: excel excel-vba

我正在尝试减少对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

3 个答案:

答案 0 :(得分:4)

所有这些代码都可以翻译为:

Range("B1:B" & Cells(Rows.Count, "A").End(xlUp).Row).Value = Range("B1").Value

我们正在创建RangeB1的{​​{1}}单元格,以及B列中最后一行的单元格(我们使用A )等于单元格Cells(Rows.Count, "A").End(xlUp).Row中的值。

img1

答案 1 :(得分:3)

其他人为您的代码提供了直接的解决方案。但是对于您在如何避免“选择”方面受到“指导”的问题,这就是正在发生的事情……

考虑。选择作为存储对其附加内容的引用。

Range("B1").Select 

表示存储对范围:B1的引用。

Selection.Copy

是说使用该引用,然后调用“复制”功能

您可以直接访问它,而不必使用参考。

Range("B1").Copy

现在,由于您进行复制和粘贴,因此您有两个不同的引用,即您的来源和目的地。因此,您可以将值直接从源应用到目标,而无需调用复制和粘贴功能。

Range(<DestinationRange>).value = Range(<SourceRange>).value

offset函数只是说从指定的范围开始,然后移动到指定数量的列或行,然后使用此单元格作为参考。

答案 2 :(得分:0)

您可以这样做:

package.json