Funkcja Excel VBA do aktualizacji wartości komórek + = komórka usuwa wartość

1

wprowadź opis zdjęcia tutaj

Jak mogę to zrobić, aby jeśli wprowadziłem cokolwiek do zakresu komórek B3: E3, wartość będzie równa cokolwiek, co wprowadzę, plus wartość powyższej komórki.

przykład: jeśli wprowadzę 20 do komórki C3, po naciśnięciu klawisza Return lub kliknięciu poza wartość wartość zostanie zaktualizowana do 40.

Jak dotąd wiem, że muszę mieć coś podobnego do tego:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Range("B3:E3").Value = Range("B2:E2").Value

End Sub

Wiem, że muszę w jakiś sposób uzyskać dostęp do wartości przesunięcia, ale VBA nie jest moją mocną stroną i wydaje się, że nie potrafię poprawnie sformułować tego pytania.

selectDistinct
źródło
Czy to pomoże?
LondonRob
nie, ponieważ aktualizuje komórkę za każdym razem, gdy klikniesz w dowolnym miejscu arkusza
wybierzDistinct
Można dokonać zakres specyficzne zdarzenie wykonując coś jak ten
LondonRob
Zamiast zmieniać swoje pytanie, może być lepiej dla przyszłych czytelników tego pytania, jeśli pozostawisz je bez zmian i zadasz nowe pytanie. Możesz link do tego pytania w celach informacyjnych. (ps, miejmy nadzieję, że mieszkańcy Whitby nie będą mieli nic przeciwko podzieleniu się preferencjami dotyczącymi napojów bezalkoholowych!)
LondonRob

Odpowiedzi:

1

Musisz dodać do tego mnóstwo sprawdzania błędów, ale oto gołe kości:

Private Sub Worksheet_Change(ByVal Target As Range)

  ' If we're not in the range of interest
  ' do nothing.
  If Intersect(Target, Me.Range("B2:E2")) Is Nothing Then
    Exit Sub
  End If
  ' We don't want this event to fire itself!
  Application.EnableEvents = False
  ' Now add the row above (rowOffset = -1) to the value.
  Target.Value = Target.Value + Target.Offset(-1, 0).Value
  ' Don't forget to re-enable events, otherwise there'll
  ' be no more VBA events fired.
  Application.EnableEvents = True

End Sub
LondonRob
źródło
To działa, ale jeśli
kliknę
Zauważ, że moja funkcja Worksheet_Changenie jestWorksheet_SelectionChange
LondonRob
to działa, czy można go zastosować również do poniższych wierszy?
wybierzDistinct
Wystarczy zmienić wartość przesunięcia wiersza z -1na1
LondonRob
jednak pierwszy wiersz, NIE JEST TO, TO Wyjdź z Sub, oznacza, że ​​żadna dodatkowa logika poniżej nie jest uruchomiona. I nie mogę powielić sub i zmieniłem kod, ponieważ nie mogę mieć tej samej ambicji
wybierzDistinct