Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Задача в ексели


Автор: Aizensoske 18.12.2011, 14:29
макрос втроен в ексели выдает ошибку в коде.(макросы)
Взгляните может кто нить знает , что он запустился.
Ошибка примерно может быть из-за ( 1 и l) так как откуда мы переписывали было не точно понятно где 1 а где л.

Автор: Данкинг 18.12.2011, 14:53
Цитата(Aizensoske @  18.12.2011,  15:29 Найти цитируемый пост)
втроен в ексели 

Начало уже интересное.
Цитата(Aizensoske @  18.12.2011,  15:29 Найти цитируемый пост)
Взгляните может кто нить знает , что он запустился.

Да откуда же я знаю, запустился он или нет smile

Первая же ошибка - Sub or function not defined - на этой строчке:
Код

nl(j) = 0

Начинаем логически анализировать. Думаем. Смотрим объявления переменных:
Код

Dim n1(1 To k) As Single

Мне одному что-то кажется подозрительным? smile 

Ну, исправили. Далее ошибка вылезает на этом:
Код

Nextj

После чего делаем соответствующие выводы и забиваем на дальнейшее изучение кода. smile 

А вообще это в "центр помощи". Даже не в раздел по "офису".

Добавлено через 4 минуты и 38 секунд
И вообще, там куча необъявленных переменных. Юзай "Option Explicit".

Автор: Aizensoske 18.12.2011, 19:43
Можно что нить сделать что ю это запустилось ?

Автор: Данкинг 18.12.2011, 20:09
Если ошибки в коде исправить - то оно запустится, инфа 120%.

Автор: Aizensoske 19.12.2011, 12:03
Ты можеш их исправить, я просто ваше вэтом не шарю, просто задачу дали по информатики.

Автор: dorogoyIV 19.12.2011, 12:16
все буквы l заменил на цифру 1,
в одном месте цикл подправил,
и еще несколько синтаксических ошибок исправил

Код

Sub lipid()
Const n = 20, k = 6
Dim x(1 To n) As Single
Dim q(1 To k) As Single
Dim n1(1 To k) As Single
Dim p(1 To k) As Single
Dim m, d, s, h, max, min As Single

 For i = 1 To n
 x(i) = ThisWorkbook.ActiveSheet.Cells(2 + i, 2)
 Next i
 'нахождение среднего значения - m
 'нахождение отклонения от среднего - s
 m = 0
 d = 0
 
 For i = 1 To n
 m = m + x(i)
 d = d + x(i) ^ 2
 Next i
 
 m = m / n
 d = d / n - m ^ 2
 s = Sqr(d)
 
 Range("D2:F2,D5:H5").Select
 With Selection
 .HorizontalAlignment = xlCenter ' горизонтальное выравнивание к центру
 .Font.Bold = True ' начертание шрифта
 .Font.Size = 12 'размер шрифта
 End With
 With ThisWorkbook.ActiveSheet
 .Cells(2, 4) = "m"
 .Cells(2, 5) = "d"
 .Cells(2, 6) = "s"
 .Cells(3, 4) = m
 .Cells(3, 5) = d
 .Cells(3, 6) = s
 ' нахождение начала и конца массива
 min = x(1)
 max = x(1)
 For i = 2 To n
 If x(i) < min Then
  min = x(i)
 Else
 If x(i) > max Then
      max = x(i)
     End If
   End If
Next i
 'нахождения длинны участка
 h = (max - min) / k
 
 For j = 1 To k
 q(j) = min + j * h
 n1(j) = 0
 Next j
 
 For i = 1 To n
 j = 0
 Do
 'j = 0
 'Do
 j = j + 1
 Loop While x(i) > q(j)
 n1(j) = n1(j) + 1
 Next i
 
 For j = 1 To k
 p(j) = n1(j) / n * 100
 Next j
 .Cells(5, 4) = "k"
 .Cells(5, 5) = "q"
 .Cells(5, 6) = "nl"
 .Cells(5, 7) = "p"
  
  For j = 1 To k
  .Cells(5 + j, 4) = j
  .Cells(5 + j, 5) = q(j)
  .Cells(5 + j, 6) = n1(j)
  .Cells(5 + j, 7) = p(j)
  Next j
  End With
  End Sub

Автор: Данкинг 19.12.2011, 12:46
Aizensoske, я могу тебе минус в репу поставить за неуважение к форумчанам, но не буду, потому что я добрый сегодня.

dorogoyIV, ты ещё более добрый. smile Просто мне после NextJ дальше смотреть сей код расходелось.

Автор: dorogoyIV 19.12.2011, 13:56
Данкинг, во мне еще не умерла наивная надежда, что юзеры не тупо списывают код, а хоть немного его осмысливают  smile (очень наивный  smile )
однако, то, что, для нас кажется обыденным, для новичков может оказаться сложным...

а тему можно в центр помощи перенести imho

Автор: Данкинг 19.12.2011, 14:37
Цитата(dorogoyIV @  19.12.2011,  14:56 Найти цитируемый пост)
однако, то, что, для нас кажется обыденным, для новичков может оказаться сложным...

Так дело не в сложности - я не против ответить на вопросы - а в том, что код именно тупо списан даже без понимания его действия.
Цитата(dorogoyIV @  19.12.2011,  14:56 Найти цитируемый пост)
а тему можно в центр помощи перенести imho 

Я сразу это предложил. smile 

Автор: Aizensoske 19.12.2011, 19:26
Просто у меня нету навыков програмирвоание  в нашем инститее нас заставлют заниматься тем чем мы не должны заниматься...
я могу рецепт напсать, машину запустить , но вот прогу ваше писать не могу ..
разница между мной и вами в том что я ваше дуб по кодам.
но ты ваше респект без исходников смог я жуе думал когда на инфоратику пойду фоткать задание и тут выкладывать а ты ....без исходников сделал ..ваше красава.

Автор: Данкинг 19.12.2011, 20:08
Цитата(Aizensoske @  19.12.2011,  20:26 Найти цитируемый пост)
в нашем инститее нас заставлют заниматься тем чем мы не должны заниматься...

Да уж, и русский язык вас там учить точно не заставляют.

Автор: Данкинг 21.12.2011, 00:37
Я никак не успокоюсь с этой темой. Aizensoske, а чем тебе http://programmersforum.ru/showthread.php?p=939643 smile 

Автор: LOPUH 21.12.2011, 10:08
Такое можно в песочницу перенести..

Автор: Aizensoske 21.12.2011, 19:10
потому что если  бон его в эксель не встроил я б счас спал спокойно.

Автор: Данкинг 21.12.2011, 21:32
Цитата(Aizensoske @  21.12.2011,  20:10 Найти цитируемый пост)
потому что если  бон его в эксель не встроил я б счас спал спокойно.

Т.е. этот макрос в данном файле написал лично Билли? smile И каким же образом макрос тебе мешает спать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)