ГДЕ ОШИБКА???? Sub qwer() Dim a(1 To 10), b(1 To 10) As Integer n = 10 For i = 1 To n...

0 голосов
126 просмотров

ГДЕ ОШИБКА????
Sub qwer()
Dim a(1 To 10), b(1 To 10) As Integer
n = 10
For i = 1 To n
a(i) = Worksheets("Ëèñò1").Cells(1, i + 1).Value
b(i) = Worksheets("Ëèñò1").Cells(2, i + 1).Value
Next i
s = 0: Min = a(1)
For i = 1 To n
s = s + b(i)
If a(i) <= Min Then Min = a(i)<br> Next i
R = Min / s
MsgBox "s=" & s
MsgBox "min=" & Min
MsgBox "R=" & R
End Sub



Информатика (99 баллов) | 126 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

1. Программа работает. Если она что-то "не так" выдает, нужно привести текст сообщения и место ошибки.
2. Поскольку я написал тестовый пример и он прошел, программа работоспособна. Она работоспособна ограниченно, если у Вас возникает ошибка в её работе.
3. Если у Вас возникает ошибка, а у меня нет, виноваты данные, которые программа обрабатывает. Посему нужно привести Ваши конкретные 2х10 строк данных, чтобы можно было сделать какой-то анализ.
4. Во избежание проблем с типами рекомендую добавить строку описания Dim s As Integer, min As Integer, R As Double
Это приведет к типизации переменных и позволит лучше локализовать ошибку.

(150k баллов)
0 голосов

Проверил через VBEdit, код верен. Смутили только названия worksheets'ов.

(7.2k баллов)
0

через excel делал выдает ошибку :overflow

0

в строке R=S/min

0

так там Min / s или S / min ?

0

R=S/min

0

Возможно, ошибка из-за деления: результат выходит вещественный (всегда), а не целый, и VBS может не воспринимать подобное действие в случае больших чисел.

0

и что делать?:D