Автор Тема: Ошибка "Ambiguous name detected"  (Прочитано 107 раз)

Оффлайн Посетитель 10.01.2022

  • Посетитель форума
  • Сообщений: 4
Ошибка "Ambiguous name detected"
« : 10 Январь 2022, 18:02 »
Тыкаю самодельный калькулятор в VBA, написал, чтобы кнопка активировала процедуру "НазваниеПроцедуры", выдаёт вышеописанную ошибку. Названия одинаковые, изменение названия ничего не меняет. Прошу помощи.

Онлайн Администратор

  • Administrator
  • Сообщений: 1952
Re: Ошибка "Ambiguous name detected"
« Ответ #1 : 10 Январь 2022, 19:16 »
Написал вам два письма на почту с заголовком "Письмо с Форума по VBA, Excel и Word". Написал именно на почту, а не на форум.

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

Оффлайн Посетитель 10.01.2022

  • Посетитель форума
  • Сообщений: 4
Re: Ошибка "Ambiguous name detected"
« Ответ #2 : 11 Январь 2022, 09:32 »
Здравствуйте, спасибо за ответ, но у меня только одна процедура такого типа, и, опять же, изменение названия ничего не меняет, вылезает та же ошибка.

Онлайн Администратор

  • Administrator
  • Сообщений: 1952
Re: Ошибка "Ambiguous name detected"
« Ответ #3 : 11 Январь 2022, 11:45 »
В этой проблеме не "тип", а "имя".
У каждой процедуры есть "имя". Например, в вашем модуле есть процедура "knopka1". У этой процедуры имя "knopka1". Если внутри модуля будет две процедуры, у которых имя "knopka1", то будет такая ошибка, как у вас.

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

Оффлайн Посетитель 10.01.2022

  • Посетитель форума
  • Сообщений: 4
Re: Ошибка "Ambiguous name detected"
« Ответ #4 : 11 Январь 2022, 12:36 »
Пожалуйста, но я всё ещё не понимаю, в чём дело.
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

Онлайн Администратор

  • Administrator
  • Сообщений: 1952
Re: Ошибка "Ambiguous name detected"
« Ответ #5 : 11 Январь 2022, 12:40 »
В VBA нельзя запустить процедуру таким кодом:
Private Sub ComboBox1_Change()

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

Оффлайн Посетитель 10.01.2022

  • Посетитель форума
  • Сообщений: 4
Re: Ошибка "Ambiguous name detected"
« Ответ #6 : 11 Январь 2022, 12:54 »
Большое спасибо, совершенно об этом не подумал