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.


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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.