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.