使用Range.End属性来扩展多小区范围

问题描述 投票:1回答:3

使用下面的数据,并且在宏录制器录制以下操作产生下面的代码:

Ctrl + C 
Ctrl + Shift + Right Arrow 
Ctrl + R

Starting data with single-cell range selected

Sub Macro1()
    Selection.Copy
    Range(Selection, Selection.End(xlToRight)).Select
    Application.CutCopyMode = False
    Selection.FillRight
End Sub

Data after entering above keyboard strokes

这是我所期望的那样。执行恰好当多个单元被作为图像中选择,以相同的键盘笔画下方达到相同的结果,并且产生在宏记录相同的代码。然而,当选择了多个小区重用此代码不会产生这一结果。为什么Range.End财产不延伸的多单元格区域这种情况下,即工作?

Starting data with multi-cell range selected

excel vba
3个回答
0
投票
Sub copyfill()
With ThisWorkbook.Sheets(REFERENCE)
    LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
    .Range(.Cells(1,"B"),.Cells(1,LastCol).Value = .Cells(1,1).Value
End With
End Sub

也许不是一个回答你的问题,但是这确实是相同的。希望能帮助到你。

正如Luuklag已经提到的,如果你想自动填充一个范围,它是附属于一个连续范围。填充在col A一些连续的细胞,然后在添加B1的值。 Col B将自动填充,没有任何问题。尝试只例如相同A1A20填充,你会发现col B不会自动填充,直到20nd行。


0
投票

获取LASTROW

尝试这个:

  • 声明与用于最后一个非空列ActiveCell之间的间隔的范围内;
  • 使用每个在范围内的每个单元格中输入的所有值。 Public Sub copyLastColumn() Dim val As Variant: val = Selection.Value Dim sh As Worksheet: Set sh = ThisWorkbook.Worksheets(1) Dim rng As Range: Set rng = sh.Range(ActiveCell, _ sh.Cells(ActiveCell.Row, sh.Cells(ActiveCell.Row, sh.Columns.Count).End(xlToLeft).Column)) For Each el In rng el.Value = val Next el End Sub

0
投票

发生这种情况是因为在宏观平均命令:

  1. 选择=范围( “A1”)
  2. 范围(精选,Selection.End(xlToRight))。选择=范围( “A1”,范围( “A1”)。完(xlToRight))。选择

这意味着“选择从单元格A1到第1行中包含数据的最后一个单元”。

你必须在宏观使从第1行的选择之间diffеrence - 这就是范围(“A1”),并选择其中你与鼠标,启动之前的宏!

这就是为什么,当你选择在他们价值2的相邻小区,你认为宏观什么也不做 - 但宏做的工作 - 你可以在这个被定罪,如果你在细胞有diffеrent值 - 例如开始在A1和ST在A2 - 宏开始后,你会看到,在这个单元格的值成为启动和启动

你可以看到这个URL更多:https://docs.microsoft.com/en-us/office/vba/api/excel.range.end

© www.soinside.com 2019 - 2024. All rights reserved.