Formuła VBS (excel)

Gdy uruchamiam makro … otrzymuję wynik 31.125 :slight_smile: to logiczne

Sub test()

abc = (2 + 2) * 9 - 6 + 9 / 8

MsgBox abc

End Sub

a gdy uruchomię … otrzymam oczywiście :frowning: (2 + 2) * 9 - 6 + 9 / 8

Sub test2()

abc = "(2 + 2) * 9 - 6 + 9 / 8"

MsgBox abc

End Sub

:?: chodzi o to żeby otrzymywać wynik policzony a nie łańcuch tekstowy …jakaś funkcja zamieniająca to, ewentualnie jakaś procedura z tym, że w pierwszym przypadku liczenie przebiega prawidłowo jest zachowana kolejność w nawiasach potem mnożenie i dodawanie co dziwne, jeżeli przepuszczę to przez komórkę Excel’a

Sub test_ex()

ActiveSheet.Range("A1").FormulaR1C1 = "=(2+2)*9-6+9/8"

MsgBox ActiveSheet.Range("A1").Value

End Sub

to otrzymuję wynik poprawny … ale chciałbym to uzyskać bez odwoływania się do komórki

A możesz jeszcze wyjaśnić po co wpisujesz działanie w cudzysłowach?

abc = "(2 + 2) * 9 - 6 + 9 / 8"

Wpisując w cudzysłowach, powodujesz, że zmienna ABC jest traktowana jako zmienna tekstowa i tak też się wyświetla.

to działanie pobieram z textbox’a bo chcę mieć taki prosty kalkulator liniowy

a textbox oczywiście takie wpisy zwróci mi jako łańcuch tekstowy

jedynie jak puszczę makrem (3 przykład ) do komórki, to wezmę z powrotem wartość no ale chcę to zrobić w dodatku

i żeby działało na arkuszach chronionych … wiem można to rozbić na czynniki pierwsze

i napisać procedury obliczeniowe, ale dochodzi kolejność działań i nawiasy, a to już będzie potężne makro … a chodziło mi o coś małego