Excel宏:使记录的一个特定于细胞?

时间:2010-12-08 13:05:09

标签: vba excel-vba excel

我已经记录了一个简单的宏,我需要将其制作成通用的,所以它可以用于任何行和最后四个单元格。这是我的回收版本:

Selection.End(xlToRight).Select
Selection.End(xlToRight).Select
Selection.End(xlToRight).Select
Selection.End(xlToRight).Select
Selection.End(xlToLeft).Select
Range("Q12:T12").Select
Range("T12").Activate
Selection.Copy

End Sub

我如何

  • 让它进入ROW的最后一个单元格我将光标放入?
  • 将单元格特定范围更改为一个范围,意味着:选择此单元格并在左侧选择3个单元格?

... selection.copy我想我几乎可以管理:)

非常感谢 麦克

2 个答案:

答案 0 :(得分:5)

这将复制您单击的任何行中的最后四个单元格:

Sub CopyLastFourCellsOfRow()
Dim lastCell As Range
Dim rngToCopy As Range

Set lastCell = Selection.End(xlToRight)
Set rngToCopy = Range(lastCell, lastCell.Offset(0, -3))

rngToCopy.Copy

End Sub

更新 - 如果您的行已破坏数据,那么最佳方法是从电子表格的最后一列(第IV列)开始,然后再返回。要实现此目的,请使用以下内容替换lastCell语句:

Set lastCell = Cells(Selection.Row, 256).End(xlToLeft)

答案 1 :(得分:4)

您实际上可以在一次快速行动中执行您所询问的各个步骤。 要使其转到当前行中的最后一个单元格,只需使用ActiveCell.End(xlToRight)。 (使用'ActiveCell',因为当仅选择一个单元格时,它等同于'选择',但即使选择了多个单元格也能正常工作。)

Range(ActiveCell, ActiveCell.Offset(0, -3)).Select

将选择当前单元格,并在左侧选择3个单元格。请注意,您不需要在单独的步骤中执行“Selection.Copy”。你可以简单地去:

Range(ActiveCell, ActiveCell.Offset(0, -3)).Copy