如何在用户选择的范围内为所有单元格添加“+1”?

时间:2015-02-18 15:22:48

标签: vba range selection

我需要用户用鼠标选择一系列单元格,然后运行宏到add +1到所选范围。范围通常每次都不同,因此无法定义。

这是我到目前为止所做的,它只适用于单个活动单元格,我不能让它在范围选择上工作,因为我不知道要定义什么或使用什么功能。

我的代码关注:

Sub Add()
ActiveCell.Value = ActiveCell.Value + 1
End Sub

2 个答案:

答案 0 :(得分:3)

以下代码使用内置的“粘贴特殊添加”功能为所选范围内的每个单元格添加1。

Sub AddOneToSelection()

    Dim rBlank As Range

    If TypeName(Selection) = "Range" Then

        'Put a '1' in an unused cell and copy it
        Set rBlank = ActiveSheet.Cells.SpecialCells(xlLastCell).Offset(1, 0)
        rBlank.Value = 1
        rBlank.Copy

        'Paste Special Add over the selection
        Selection.PasteSpecial Paste:=xlPasteValues, _
            Operation:=xlAdd

        'Get rid of the copied cell
        rBlank.ClearContents

    End If

End Sub

这种过度循环的好处是,Paste Special Add会以不同的方式处理公式和值,而您不必自己编写该部分。

缺点是你将UsedRange增加一行,如果这对你很重要。

答案 1 :(得分:0)

这应该适合你:

Dim r, c As Range
Set r = Selection

For Each c In r
    c.Value = "+1"
Next

这假设您的单元格格式将显示“+1”而不是“1”。您可以将单元格的格式设置为“文本”。