使用以下数据,并在宏记录器中记录以下操作,将产生以下代码:
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属性在这种情况下不起作用,即扩展多像元范围?
答案 0 :(得分: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
将自动填充,没有任何问题。仅尝试例如A1
和A20
已填充,您会注意到col B
直到第20行才会自动填充。
答案 1 :(得分:0)
获取最新消息
尝试一下:
对每个区域使用 输入范围内每个单元格中的所有值。
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
答案 2 :(得分:0)
发生这种情况是因为宏中的命令的意思是:
这意味着“从单元格A1到行1中包含数据的最后一个单元格的选择”。
在启动宏之前,您必须区分宏第1行中的选择-这是Range(“ A1”)和用鼠标做出的选择!
这就是为什么当您选择2个相邻单元格中包含值的原因时,您认为宏什么也不做-但是宏确实起作用-如果您在单元格中有不同的值,您可能会因此而被定罪-例如Start in A1 and A2中的ST-启动宏后,您将看到此单元格中的值变为“开始”和“开始”
您可以查看以下网址以了解更多信息:https://docs.microsoft.com/en-us/office/vba/api/excel.range.end