如何仅对一个特定单元格使用范围方法?

How to work with the range method with only one specific cell?

我希望我在电子表格中选择的单元格获得 +1 增量。当我有一个范围时,下面的代码工作正常,但是当我只选择一个单元格时,代码会为电子表格中的每个单元格添加 +1。

    Sub Macro_MAIS_1()
'
' Macro_MAIS_1 Macro
'

'

Dim AlocationWorksheet As Worksheet
Dim ActSheet As Worksheet
Dim SelRange As Range

Dim iCells As Integer

On Error GoTo Fim

Set AlocationWorksheet = Worksheets("ALOCAÇÃO")
AlocationWorksheet.Unprotect
Set ActSheet = ActiveSheet
Set SelRange = Selection.SpecialCells(xlCellTypeVisible)


iCells = SelRange.Cells.Count


    Range("O7").Select
    Selection.Copy

    SelRange.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
        :=False, Transpose:=False
    Exit Sub
        
Fim:
    MsgBox Selection.Address
    Range("O7").Select
    Selection.Copy
    
    SelRange.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
        :=False, Transpose:=False

End Sub

我会避免使用选择,但这应该可行。如果您有短信,您会 运行 遇到麻烦,需要开出一些支票。您也不应该对所有单元格进行计数,因为您可能会溢出值。检查行和列,但不能同时检查两者。

Sub addPlusOne()
Dim aRange As Range, i As Long, j As Long
    Set aRange = Selection
    
If aRange.Rows.Count > 1 Or aRange.Columns.Count > 1 Then
    Dim zRng()
    zRng = aRange.Value
        
        For i = LBound(zRng) To UBound(zRng)
            For j = LBound(zRng, 2) To UBound(zRng, 2)
                zRng(i, j) = zRng(i, j) + 1
            Next j
        Next i
    
    aRange.Value = zRng
Else
    aRange.Value = aRange.Value + 1
End If

End Sub

编辑:OP 评论说他们想使用可见选择。虽然这不是最佳做法,但这会奏效。

Sub plusOneOnSelection()
Dim aCell As Range

For Each aCell In Selection.SpecialCells(xlCellTypeVisible).Cells
    If IsNumeric(aCell) Then aCell.Value = aCell.Value + 1
Next aCell


End Sub