Ошибка "Ambiguous name detected"

Автор Посетитель, 10 января 2022, 18:02

Посетитель

Тыкаю самодельный калькулятор в VBA, написал, чтобы кнопка активировала процедуру "НазваниеПроцедуры", выдаёт вышеописанную ошибку. Названия одинаковые, изменение названия ничего не меняет. Прошу помощи.

Администратор

Написал вам два письма на почту с заголовком "Письмо с Форума по VBA, Excel и Word". Написал именно на почту, а не на форум.

Эта ошибка означает, что внутри одного модуля находятся несколько одинаковых процедур.
Запустите макрос, дождитесь ошибку, VBA выделит имя процедуры, которое используется внутри модуля несколько раз.
Замените имя процедуры на другое, чтобы не было одинаковых имён.

Посетитель

Здравствуйте, спасибо за ответ, но у меня только одна процедура такого типа, и, опять же, изменение названия ничего не меняет, вылезает та же ошибка.

Администратор

В этой проблеме не "тип", а "имя".
У каждой процедуры есть "имя". Например, в вашем модуле есть процедура "knopka1". У этой процедуры имя "knopka1". Если внутри модуля будет две процедуры, у которых имя "knopka1", то будет такая ошибка, как у вас.

Запустите макрос, дождитесь ошибки, VBA выделит код, в котором ошибка, скопируйте этот код на форум.

Посетитель

Пожалуйста, но я всё ещё не понимаю, в чём дело.
Option Explicit

Private Sub ComboBox1_Change()
Dim x, y
y = CDbl(Калькулятор.TextBox2.Value)
x = CDbl(Калькулятор.TextBox1.Value)

Select Case ComboBox1.Text
Case "Сложить"
Калькулятор.TextBox3.Value = x + y
Case "Вычесть"
Калькулятор.TextBox3.Value = x - y
Case "Разделить"
Калькулятор.TextBox3.Value = x / y
Case "Умножить"
Калькулятор.TextBox3.Value = x * y
Case "Степень"
Калькулятор.TextBox3.Value = (x) ^ (2) & "   " & (y) ^ (2)
Case "Корень"
Калькулятор.TextBox3.Value = (x) ^ (1 / 2) & "   " & (y) ^ (1 / 2)
End If
Case "Факториал числа x"
Dim a
a = x
Do
x = s * a
a = a - 1
Loop While a > 0
Калькулятор.TextBox3.Value = x
End Select
End Sub
Private Sub CommandButton1_Click()
    Unload Me
End Sub
Private Sub CommandButton2_Click()
    Do:
    Private Sub ComboBox1_Change()
   
End Sub

Администратор

В VBA нельзя запустить процедуру таким кодом:
Private Sub ComboBox1_Change()

Чтобы запустить процедуру, нужно просто указать имя процедуры:
ComboBox1_Change

Посетитель

Большое спасибо, совершенно об этом не подумал