Тема: Как вычислить формулу, данную как текст?

Как может i оценить эту формулу ="="&3&"+"&5, так номер 8 появился бы?

Re: Как вычислить формулу, данную как текст?

Привет!
Нет там действительно путь это могло быть вычислено?

Re: Как вычислить формулу, данную как текст?

'References: MS Script Control 1.0 (msscript.ocx)
Sub Evalute()
    Dim scr As New ScriptControl
    Dim MathExpression As String
    Dim Result As Double
    MathExpression = "3+5"
    scr.Language = "VBScript"
    Err.Clear
    Result = scr.Eval(MathExpression)
    If Err <> 0 Then
        MsgBox "The entered expression is incorrect!", vbCritical
        Exit Sub
    Else
        MsgBox Result
    End If
End Sub

Re: Как вычислить формулу, данную как текст?

Спасибо!
Когда i копировал это в VB окно редактора, ошибка возникла неожиданно! -> user-defined type not defined..
Я должен написать что-нибудь больше?

Re: Как вычислить формулу, данную как текст?

Я имею один больше вопрос.
Как могу я говорить VB, который ячейку придется проверить и вычислиться, если формула правильна, или код, который вы написали, вычисляет все текстовые формулы в Листе?

Re: Как вычислить формулу, данную как текст?

1. А эту библиотеку вы подключили к проекту: References: MS Script Control 1.0 (msscript.ocx)?
2. вычисляет все текстовые формулы , если они содержат корректное с точки зрения математики выражение.

Re: Как вычислить формулу, данную как текст?

Фактически вещь есть, что я имею формулу например "3*y+8", написанный как текст. Я имею где-нибудь в листовой ячейке, которая содержит значение "y" например 5. Затем, используя SUBTRACT я могу заменить y знак к реальному значению и добавить "=" знак к началу. Затем ячейка, когда не щелкается напоминал бы: =3*5+8..
И сейчас i пожелание это, чтобы быть вычисленным.

Re: Как вычислить формулу, данную как текст?

Есть еще один пример на похожую тему, я его когда-то нашел на этом форуме. К сожалению, не помню автора (или того кто на него навел...).
Здесь тоже вводится выражение в виде строки
a = InputBox("Simple Calculation")
и вычисляется.
Обратите внимание как здесь формируется целая процедура и вставляется в модуль:
msg = "sub code" & vbCrLf & "msgbox cstr(" & _
             a & ")" & vbCrLf & "end sub"
       mo.CodeModule.InsertLines 1, msg
Попробуйте сделать таким образом что-то свое.
И еще. Мне не приходилось работать со связкой VBA - Excel,поэтому я не смогу вам помочь в этом плане.

Sub calc()
     Dim vv As VBE
     Set vv = VBE
     Dim mo As VBComponent
     Dim a As String
     a = InputBox("Simple Calculation")
     For Each mo In vv.ActiveVBProject.VBComponents
      If mo.Name = "ThisDrawing" Then
       mo.CodeModule.DeleteLines 1
       mo.CodeModule.DeleteLines 1
       mo.CodeModule.DeleteLines 1
       Dim msg As String
       msg = "sub code" & vbCrLf & "msgbox cstr(" & _
             a & ")" & vbCrLf & "end sub"
       mo.CodeModule.InsertLines 1, msg
      End If
     Next
     For Each mo In vv.ActiveVBProject.VBComponents
      If mo.Name = "ThisDrawing" Then
       Eval ("ThisDrawing.code")
      End If
     Next
End Sub

Re: Как вычислить формулу, данную как текст?

Спасибо и желаю удачи!

Re: Как вычислить формулу, данную как текст?

Ничего не понял..))) Обсуждается VBE Excel?
Если речь идет о том, чтобы ввести в ячейку листа excel формулу, то это делается через свойство .formula или .localformula, если собираетесь вводить формулы на языке локализации. Свойство относится к объекту Range.
пример из help:

Worksheets("Sheet1").Range("A1").Formula = "=$A$4+$A$10"

В кавычках формируется любая формула (естесственно с учетом правил написания ссылок на ячейки, если они присутствуют, как в приведенном примере)