/ / Zapobieganie odejmowaniu do wyświetlania w pasku formuły (Excel 2010, VBA) - Excel, VBA, Formuła, Odejmowanie

Zapobieganie pojawianiu się odejmowania na pasku formuły (Excel 2010, VBA) - excel, vba, formuła, odejmowanie

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:

wprowadź opis obrazu tutaj

Czego nie chcę widzieć w moim pasku formuły:

wprowadź opis obrazu tutaj

Odpowiedzi:

0 dla odpowiedzi № 1

Po 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.