Szukam pomocy! Cześć, Prawie skończyłem projekt, a część nie rozumiem mam +
i a -
przycisk, aby dodać kwoty z lewej komórki do całkowitej komórki po prawej stronie (w przykładzie jest to 54) (pokazany w linku poniżej) Również ilość razy +
jest wciśnięty jest również obliczana na najbardziej odległej komórce (2 dla tego przykładu)
Z następującego kodu:
Range("L8").FormulaLocal = "=" & Replace(Range("L8").FormulaLocal, "=", "") & "+" & Range("G8")
Problem polega na tym, że przy tym samym kodzie, przy użyciu odejmowania, nie chcę go widzieć w pasku formuły, ponieważ kończy się jako:
=29+29+29-29-29+29...
(Drugi obraz)
Chcę tylko zachować pozytywy. Czy w powyższym kodzie jest coś, co mogę zmienić, ale nie pokaże odejmowania i nie wymaże całej istniejącej formuły
Dzięki!
Część mojego arkusza Excela dla lepszego zrozumienia:
Czego nie chcę widzieć w moim pasku formuły:
Odpowiedzi:
0 dla odpowiedzi № 1Po pierwsze, czy wartość na twoim zrzucie nie powinna wynosić 58, a nie 54?
Następnie, czy komórka naprawdę musi zawierać formułę? Jak wspomniał @teylyn, po prostu wykonaj obliczenia w VBA i ustaw wartość komórki, np. Dla +
przycisk:
Range("L8").Value = Range("L8").Value + Range("G8").Value
Wreszcie, jeśli naprawdę musisz zachować formułę i wiesz, że wartość w komórce G8
(wartość dodawana lub odejmowana) nigdy nie zmienia się między kliknięciami +
i -
przyciski, możesz najpierw zwiększyć licznik (który, jak zakładam, jest komórką) M8
), a następnie użyj jego wartości do zbudowania formuły.
Może to wyglądać podobnie do poniższego, chociaż chciałbyś dodać pułapkę błędów. Jeśli możesz upewnić się, że licznik nigdy nie będzie ujemny, możesz wyeliminować ElseIf
część:
Public Sub MinusButton_Click()
Range("M8").Value = Range("M8").Value - 1
Range("L8").FormulaLocal = GetCellFormula
End Sub
Public Sub PlusButton_Click()
Range("M8").Value = Range("M8").Value + 1
Range("L8").FormulaLocal = GetCellFormula
End Sub
Private Function GetCellFormula()
Dim strFormula As String
Dim intNum As Integer
strFormula = "="
If Range("M8").Value > 0 Then
For intNum = 1 To Range("M8").Value
strFormula = strFormula & Range("G8").Value & "+"
Next intNum
ElseIf Range("M8").Value < 0 Then
For intNum = Range("M8").Value To 1 Step -1
strFormula = strFormula & Range("G8").Value & "-"
Next intNum
End If
strFormula = Left(strFormula, Len(strFormula) - 1) "strip trailing symbol
GetCellFormula = strFormula
End Function
W przeciwnym razie, jeśli wartość w komórce G8
może się zmienić, jedyną opcją może być wykonanie niektórych(potencjalnie) skomplikowane parsowanie istniejącej formuły. Jeśli tak jest, spróbuj najpierw i opublikuj nowe pytanie SO, jeśli masz jakiekolwiek problemy.