Не очищается переменная

Автор Александр Баландин, 16.02.2015, 23:39

« назад - далее »

Александр Баландин

Привет всем, вот такой "код", проблема в том что когда вводишь значение "1" пишет: "функция не существует", так и надо, но потом пишет ответ предыдущего решения, в чем проблема?
Код

Dim x, y As Single

Sub ghrt ()
     x = Val(InputBox("Введите значение"))
     If x <> 1 Then y = 1 / ((x ^ 2) - 1) Else MsgBox "Функция не существует"
     MsgBox y
End Sub

vikttur

Переменные заданы для модуля, поэтому их значение сохраняется.
Если переменные используются только в этой процедуре, их нужно определять в теле процедуры, после строки Sub...
В VBA нужно задавать тип каждой переменной. В Вашей записи x имеет тип Value

Выводите сообщение только при наличии результата:
    If x <> 1 Then
        y = 1 / ((x ^ 2) - 1)
        MsgBox y
    Else
        MsgBox "Функция не существует"
    End If

_Boroda_

Или так

Sub ghrt ()
     x = Val(InputBox("Введите значение"))
     If x <> 1 Then y = 1 / ((x ^ 2) - 1) Else y = "Функция не существует"
     MsgBox y
End Sub
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

vikttur

Саня, тут подозрение, что у не должна меняться, если х=1, т.к. переменные вынесены за пределы процедуры. Но, больше всего, что это ошибочно.