Новое в использовании VBA и об этом мало известно. Использование его для проекта Engineering для решения проблем с устойчивостью к сильному склоне. При входе в первые 7 вычислений VBA правильно решает их в пользовательской форме. Но когда я пытаюсь вычислить 8-ю формулу (AVHS8), она дает мне ошибку, ведь ошибка времени «Ошибка 13» не совпадает. Я не уверен, в чем проблема, формулы работают отлично. если кто-то мог бы помочь, это было бы очень признательно. Проблема ниже.vba error 13 type missmatch, VBA
BES = 2,5 РАД = 18,58 ЗСЦП = 7,5 и ОН = 17, это просто цифры, которые устанавливаются и не изменяют
Private Sub Calculate_Click()
RAD = Sqr(DTCP^2 + OH^2)
BES = DTCP/3
AVHS1 = (0)
AVHS2 = (Sqr(RAD^2 - (DTCP - BES)^2) - OH)
AVHS3 = (Sqr(RAD^2 - (DTCP - BES - BES)^2) - (OH) + (Tan(30 * 3.14/180) * BES))
AVHS4 = (Sqr(RAD^2 - (DTCP - BES - BES - BES)^2) - (OH) + (Tan(30 * 3.14/180) * BES * 2))
AVHS5 = (Sqr(RAD^2 - (DTCP - BES - BES)^2) - (OH) + (Tan(30 * 3.14/180) * BES * 3))
AVHS6 = (Sqr(RAD^2 - (DTCP - BES)^2) - (OH) + (Tan(30 * 3.14/180) * BES * 4))
AVHS7 = (Sqr(RAD^2 - (DTCP)^2) - (OH) + (Tan(30 * 3.14/180) * BES * 5))
'VBA can solve all the above code. it cant solve the code below (AVHS8)
AVHS8 = (Sqr(RAD^2 - (DTCP + BES)^2) - (OH) + (Tan(30 * 3.14/180) * BES * 6))
Какие типы переменных задекларирован как? ваши значения выборки дают AVHS8 == 7.31540576925892 для меня, когда удваивается –
Звучит как проблема 'Dim'. Ни одна из переменных, которые вы использовали, не объявлена в вашем коде. Итак, VBA принимает решение для вас и объявляет переменные для вас. OH (например) назначается 17 и может быть объявлено как «Целое число». Тем не менее, Integer не хватило бы, чтобы провести какой-либо промежуточный результат от последнего вычисления. Попробуйте «Dim» все переменные как «Double» (просто проверить эту теорию) и повторите попытку. – Ralph
@Ralph без явных деклараций, они являются типами «Вариант». Тип 'Variant' для' OH' будет первоначально VT_I4, но станет VT_R8, если он станет дробным. – Bathsheba