使用下面的数据,并且在宏录制器录制以下操作产生下面的代码:
Ctrl + C
Ctrl + Shift + Right Arrow
Ctrl + R
Sub Macro1()
Selection.Copy
Range(Selection, Selection.End(xlToRight)).Select
Application.CutCopyMode = False
Selection.FillRight
End Sub
这是我所期望的那样。执行恰好当多个单元被作为图像中选择,以相同的键盘笔画下方达到相同的结果,并且产生在宏记录相同的代码。然而,当选择了多个小区重用此代码不会产生这一结果。为什么Range.End财产不延伸的多单元格区域这种情况下,即工作?
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
将自动填充,没有任何问题。尝试只例如相同A1
和A20
填充,你会发现col B
不会自动填充,直到20nd行。
获取LASTROW
尝试这个:
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
发生这种情况是因为在宏观平均命令:
这意味着“选择从单元格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