Используя кнопку, я хочу добавить значение только к одной из выбранных ячеек - PullRequest
0 голосов
/ 18 марта 2019

У меня есть вопрос.

Я сделал кнопку, чтобы выбрать 3 ячейки. Теперь с помощью кода я сделал так, чтобы я мог рассчитывать -1 на активную ячейку и +1 на выбранные ячейки. Это работает нормально, но я хочу добавить +1 только к одной из выбранных ячеек, другой я хочу сохранить значение как есть.

Вот код, который я сделал до сих пор

Sub AddNumber()

Dim ws As Worksheet
Dim rngSel As Range
Dim rng As Range
Dim Arr() As Variant
Set rngSel = ActiveCell
Set rngSel2 = Selection
Dim index As Integer
index = 0

For Each rng In rngSel2.Areas
    If index = 0 Then
    rng = rng - 2
 Else
    rng = rng - 0
End If

index = index - 2
    If RangerngSel = rng Then
    rng = rng + 0
End If

rng = rng - 0
    If rng.Count = 1 Then
    rng = rng + 1
Else
  Arr = rng
  rng.Value = Arr
End If
Next rng

End Sub

Существует ли код для отмены выбора ячейки, к которой я не хочу добавлять значение, например, ячейка E34?

Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 18 марта 2019

Я думаю, что лучший способ добиться этого - использовать разницу между выделенными ячейками и активной ячейкой (в пределах диапазона выделения единственная белая ячейка среди других голубых ячеек является активной ячейкой). Когда выбран диапазон, самая верхняя, самая левая ячейка является активной ячейкой. (Если вы не выберете диапазон вручную, в этом случае первая ячейка, по которой щелкают, является активной ячейкой.) И поскольку вы хотите воздействовать только на 3 ячейки, я считаю, что проще избежать цикла for и операторов if, которые в противном случае были бы участие.

Sub AddNumber()

    'Select a range of 3 cells
    Range("C3:C5").Select

    'Subtract 1 from the top cell's value
    ActiveCell.Value = ActiveCell.Value - 1

    'Activate the cell below the first and add 1 to its value
    Cells(ActiveCell.Row + 1, ActiveCell.Column).Activate
    ActiveCell.Value = ActiveCell.Value + 1

    'Activate the third cell and add 2 to its value
    Cells(ActiveCell.Row + 1, ActiveCell.Column).Activate
    ActiveCell.Value = ActiveCell.Value + 2

End Sub

Поскольку вы хотите оставить значение одной из ячеек в покое, вы можете опустить один из блоков кода, просто измените часть Cells(ActiveCell.Row + 1 [...] соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...