如何将“+1”添加到用户选定范围内的所有单元格?
How do I add “+1” to all cells in a user selected range?
我需要让用户使用鼠标 select 一系列单元格,然后 运行 一个 add +1
到那个 selected 范围的宏。范围往往每次都会不同,所以无法定义。
这是我目前所拥有的,它只适用于单个活动单元格,我无法让它在范围 selection 上工作,因为我不知道要定义什么或使用什么函数。
我的代码如下:
Sub Add()
ActiveCell.Value = ActiveCell.Value + 1
End Sub
这应该适合你:
Dim r, c As Range
Set r = Selection
For Each c In r
c.Value = "+1"
Next
这假设您的单元格格式将显示“+1”而不是“1”。您可以将单元格的格式设置为 "Text".
下面的代码使用内置的选择性粘贴添加功能将所选区域中的每个单元格加 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 增加了一行,如果这对您很重要的话。
我需要让用户使用鼠标 select 一系列单元格,然后 运行 一个 add +1
到那个 selected 范围的宏。范围往往每次都会不同,所以无法定义。
这是我目前所拥有的,它只适用于单个活动单元格,我无法让它在范围 selection 上工作,因为我不知道要定义什么或使用什么函数。
我的代码如下:
Sub Add()
ActiveCell.Value = ActiveCell.Value + 1
End Sub
这应该适合你:
Dim r, c As Range
Set r = Selection
For Each c In r
c.Value = "+1"
Next
这假设您的单元格格式将显示“+1”而不是“1”。您可以将单元格的格式设置为 "Text".
下面的代码使用内置的选择性粘贴添加功能将所选区域中的每个单元格加 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 增加了一行,如果这对您很重要的话。