Ишим - городской портал

Вернуться   Ишимский форум > Наши интересы > Программирование
Ответ
 
LinkBack Опции темы Опции просмотра

Программирование макросов VB
Старый 07.06.2012, 14:20   #1
ктулху (великий и ужасный)
 
Аватар для Fox_malder
 
Fox_malder вне форума

Регистрация: 16.02.2007
Адрес: Ишим
Сообщений: 6,073
Сказал(а) спасибо: 272
Поблагодарили 153 раз(а) в 116 сообщениях
Сказал(а) спасибо: 272
Поблагодарили 153 раз(а) в 116 сообщениях
Fox_malder на пути к лучшему
Отправить сообщение для Fox_malder с помощью ICQ Отправить сообщение для Fox_malder с помощью MSN Отправить сообщение для Fox_malder с помощью Yahoo Отправить сообщение для Fox_malder с помощью Skype™
По умолчанию Программирование макросов VB

Народ кто не будь знаком с макросами Vb Excel?
Суть такова, VB как то не удосужился выучить а сейчас приперло, короче накатал так что получилось , программа работает но нестабильно, пока не могу въехать почему, объясню в чем косяк, с 1 или 2 запуска макроса цифры выдает сумму не ту которая должна быть, суть задачи такова есть 2 массива H и G массив H[17] массив G[15] должен и может содержать отрицательные числа которые должны суммироваться в конце листин моего кода привожу

1. объявил разные переменные

Dim G(15), i As Integer, sumG, tyG As Integer, numG As Integer, tyH As Integer, num As Integer
Dim H(17), j As Integer, sumH
Dim g1 As String
Dim s
Dim h1 As String, check As Boolean
g1 = ""
h1 = ""

2. Сделал цикл массива G[i] =15 и тут же генерит цифры от 100 до -50

For i = 1 To 15 // цикл
tyG = 0 // очищаю переменную
G(i) = Fix(100 * Rnd) - 50 // генерирую 15 разных чисел
g1 = g1 & "G[" & i & "]=" & G(i) & " " // тут для красивости
tyG = G(i)
s = proverka(tyG, tyH, numG, numH) // переход на функцию проверки
Next i

3. Собственно код что и предыддущий

For j = 1 To 17
tyH = 0
H(j) = Fix(100 * Rnd) - 50
h1 = h1 & "H[" & j & "]=" & H(j) & " "
tyH = H(j)
s = proverka(tyG, tyH, numG, numH)

Next j

MsgBox "Массив G " & Chr(13) & g1 & Chr(13) & Chr(13) & "Массив H " & Chr(13) & h1 & Chr(13) & Chr(13) & "Сумма G= " & numG & Chr(13) & Chr(13) & "Сумма H= " & numH

End Sub

Function proverka(tyG As Integer, tyH As Integer, numG As Integer, numH)
check = False
If tyG > 0 Then
check = True
Else
numG = numG + tyG
End If

If tyH > 0 Then
check = True
Else
numH = numH + tyH
End If
End Function


__________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]


Последний раз редактировалось Fox_malder; 07.06.2012 в 14:48..
  Ответить с цитированием

Старый 07.06.2012, 16:22   #2
ктулху (великий и ужасный)
 
Аватар для AIshobotom
 
AIshobotom вне форума

Регистрация: 20.04.2010
Сообщений: 3,894
Сказал(а) спасибо: 178
Поблагодарили 166 раз(а) в 140 сообщениях
Сказал(а) спасибо: 178
Поблагодарили 166 раз(а) в 140 сообщениях
AIshobotom на пути к лучшему
По умолчанию

А зачем здесь check делать?

Код:
Sub Main

Dim G(15), i As Integer, sumG As Integer
Dim H(17), j As Integer, sumH As Integer
Dim g1 As String
Dim h1 As String
g1 = ""
h1 = ""
sumG = 0
sumH = 0

For i = 1 To 15
G(i) = Fix(100 * Rnd) - 50
g1 = g1 & "G[" & i & "]=" & G(i) & " "
sumG = sumG + G(i)
Next i

For j = 1 To 17
H(j) = Fix(100 * Rnd) - 50
h1 = h1 & "H[" & j & "]=" & H(j) & " "
sumH = sumH + H(j)
Next j

MsgBox "Массив G " & Chr(13) & g1 & Chr(13) & Chr(13) & "Массив H " & Chr(13) & h1 & Chr(13) & Chr(13) & "Сумма G= " & sumG & Chr(13) & Chr(13) & "Сумма H= " & sumH

End Sub


[Ссылки могут видеть только зарегистрированные пользователи. ]



От 100 до -50 может так?
Код:
Fix(150 * Rnd) - 50

Последний раз редактировалось AIshobotom; 07.06.2012 в 16:44..
  Ответить с цитированием

Старый 07.06.2012, 16:43   #3
ктулху (великий и ужасный)
 
Аватар для Fox_malder
 
Fox_malder вне форума

Регистрация: 16.02.2007
Адрес: Ишим
Сообщений: 6,073
Сказал(а) спасибо: 272
Поблагодарили 153 раз(а) в 116 сообщениях
Сказал(а) спасибо: 272
Поблагодарили 153 раз(а) в 116 сообщениях
Fox_malder на пути к лучшему
Отправить сообщение для Fox_malder с помощью ICQ Отправить сообщение для Fox_malder с помощью MSN Отправить сообщение для Fox_malder с помощью Yahoo Отправить сообщение для Fox_malder с помощью Skype™
По умолчанию

да действительно не к чему это я точки различные ставил для поиска ошибки, вообщем поборол я проблему! Спасибки!
__________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]

  Ответить с цитированием

Старый 07.06.2012, 20:37   #4
ктулху (великий и ужасный)
 
Аватар для OniX
 
OniX вне форума

Регистрация: 20.10.2007
Адрес: Тюмень
Сообщений: 5,014
Сказал(а) спасибо: 426
Поблагодарили 227 раз(а) в 193 сообщениях
Сказал(а) спасибо: 426
Поблагодарили 227 раз(а) в 193 сообщениях
OniX на пути к лучшему
По умолчанию

Цитата:
Сообщение от Fox_malder Посмотреть сообщение
да действительно не к чему это я точки различные ставил для поиска ошибки, вообщем поборол я проблему! Спасибки!
Еще обращай внимание на Public переменные, если их заводишь или используешь, частенько приносят много говнеца ))
  Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Вкл.




Текущее время: 00:06. Часовой пояс GMT +6.



vBulletin skin developed by: eXtremepixels
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, vBulletin Solutions, Inc. Перевод:
Search Engine Friendly URLs by vBSEO 3.6.0zCarot
| Home | Регистрация | Справка | Пользователи | Календарь | Сообщения за день | Поиск | Новые сообщения |