Member 13661579 Ответов: 2

Кто нибудь может мне помочь плз


Private Sub Command1_Click()
Dim a, b, c As Integer
a = Text1.Text
b = Text2.Text
c = Text3.Text
If a = b Then
    If a = c Then
        MsgBox "type of triangle is equilateral"
    Else
         
        MsgBox "type of triangle is isoceles"
    End If
ElseIf a = c Then
    MsgBox "Type of triangle is isoceles"
ElseIf b = c Then
    MsgBox "Type of triangle is isoceles"
    
Else
    MsgBox "Type of triangle is oblique"
End If
End Sub


Что я уже пробовал:

когда я запускаю программу, эта ошибка возникает "метод или элемент данных не найден"

CPallini

Пожалуйста, сообщите точное сообщение об ошибке (которое является более информативным, чем предоставленная вами информация).

CodeWraith

Бонусные баллы за просмотр трассировки стека, чтобы найти строку, которая выдает эту ошибку.

pt1401

Вы пробовали отлаживать и шагать через вашу программу?
На какой линии он ошибается? Какой метод или элемент данных не может быть найден?

2 Ответов

Рейтинг:
2

CHill60

Единственный способ получить эту ошибку с помощью фрагмента кода, которым вы поделились, - это если Text1, Text2 или Text3 у меня нет такого Text собственность. Неясно, что это за элементы управления, поскольку они не являются именами по умолчанию

Есть и другие проблемы с вашим кодом:

1. Используйте разумные названия для кнопок и текстовых полей. Возможно, вы только сейчас вспомните, что Command1 говорит вам, какой тип треугольника вы описали, но когда вы вернетесь к коду через 6 месяцев, после того как добавите функциональность - будете ли вы все еще помнить? Приобретайте хорошие привычки как можно скорее.

2. я думаю, что вы думаете, что определили 3 целых числа с помощью

Dim a, b, c As Integer
но вы, вероятно, найдете это a и b есть варианты. Попробуйте явного объявления переменных напр.
Dim a As Integer, b As Integer, c As Integer


3. я тоже не поклонник однобуквенных переменных - постарайтесь быть более описательными

4. Рассмотрим линию
c = Text3.Text
Вы получите ошибку "несоответствие типов" в этой строке, потому что Text1.Text это ... э-э ... текст, строка и ... c является целым числом. Некоторые компиляторы позволяют вам уйти от этого и сделать неявное преобразование для вас, но если вы оставите текстовое поле пустым, компилятор не справится. Убедитесь что любое изменение типа очевидно и ваш код будет более надежным и переносимым например
c = Val(Sheet1.Text3.Text)


После рассмотрения всего вышесказанного на самом деле нет ничего "неправильного" в представленном вами коде, но обратите внимание, что я использовал слово "портативный" выше? Если вы можете отказаться от использования VB6, то вы должны отказаться от него и использовать VB.NET (или C#, если вы предпочитаете). VB6 не подавлялся Microsoft уже несколько десятилетий. Если ваша школа настаивает на том, чтобы вы использовали VB6, то уходите и тратите свои деньги в другом месте.

Наконец, попробуйте использовать более содержательные заголовки для ваших вопросов - в основном все, кто публикует сообщения в QA, ищут помощи :-) Избегайте использования "txt-speak" (plz), если вы хотите, чтобы вас воспринимали всерьез


CPallini

5

Рейтинг:
1

Jochen Arndt

Вы объявляете свои переменные как Integer но назначьте строки. Насколько я помню, VB6 не поддерживает неявные преобразования строк в числовые типы. Сначала вы должны преобразовать строки в целые числа с помощью CInt() функция:

a = CInt(Text1.Text)
b = CInt(Text2.Text)
c = CInt(Text3.Text)