Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Перевод с Бейсика на VBA Добавлено: 22.06.10 14:48  

Автор вопроса:  
Здравствуйте, помогите, пожалуйста, перевести программный код с Бейсика на VBA.
Заранее благодарю.

10  cls
20  input "Введите число переменных"; Var
30  Dim Value(Var), Rules(Var), Var$(Var)
40  for i=1 to Var
50  Value(i)=0
60  Rules(i)=0
70  Next:print
80  print "Назовите эти переменные"
90  for i=1 to Var
100 Input "Имя переменной:";Var$(i)
110 Next: print
120 print "Назовите возможные исходы:"
130 Input "Первый исход:"; Outcome1$
140 Input "Второй исход:"; Outcome2$
150 print
160 for i=1 to Var
170 Value(i)=0
180 print "Переменная:"; Var$(i)
190 Input "Эта переменная есть <y/n>";A$
200 If A$="Y" or A$="y" then Value(i)=1
210 Next
220 Decision=0
230 for i=1 to Var
240 Decision=Decision+Value(i)*Rules(i)
250 Next
260 print "Возможный исход-";:If Decision>0 then
    print Outcome1$ else print Outcome2$
270 Input "Это верно <y/n>";A$
280 If A$="Y" or A$="y" then 150
290 If Decision > 0 then
    for i=1 to Var:Rules(i)=Rules(i)-Value(i): Next
    else for i=1 to Var:Rules(i)=Rules(i)+Value(i): Next
300 Goto 150

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #1 Добавлено: 22.06.10 17:16
вроде так должно быть... но если че, подправить - дело техники

  1.  
  2. Var = InputBox("Введите число переменных")
  3. Dim Value(100), Rules(100), Var2(100)
  4. 'Value = Array(Var)
  5.  
  6.   For i = 1 To Var
  7.   Value(i) = 0
  8.   Rules(i) = 0
  9.   Next
  10.   
  11.   MsgBox "Назовите эти переменные"
  12.   
  13.  For i = 1 To Var
  14.  Var2(i) = InputBox("Имя переменной:")
  15.  Next
  16.  
  17.  MsgBox "Назовите возможные исходы:"
  18. Outcome1 = InputBox("Первый исход:")
  19. Outcome2 = InputBox("Второй исход:")
  20.  
  21. Do
  22.  
  23.   Do
  24.      For i = 1 To Var
  25.      Value(i) = 0
  26.      MsgBox "Переменная:" & Var2(i)
  27.      A = MsgBox("Эта переменная есть <y/n>", vbYesNo)
  28.      If A = vbYes Then Value(i) = 1
  29.      Next
  30.      Decision = 0
  31.      For i = 1 To Var
  32.      Decision = Decision + Value(i) * Rules(i)
  33.      Next
  34.      
  35.      MsgBox "Возможный исход-"
  36.      If Decision > 0 Then MsgBox Outcome1 Else MsgBox Outcome2
  37.      A = InputBox("Это верно <y/n>")
  38.   Loop While A = "Y" Or A = "y"
  39.  
  40.  If Decision > 0 Then
  41.     For i = 1 To Var
  42.     Rules(i) = Rules(i) - Value(i)
  43.     Next
  44.  Else
  45.     For i = 1 To Var
  46.     Rules(i) = Rules(i) + Value(i)
  47.     Next
  48.  End If
  49.  
  50. Loop

Ответить

Номер ответа: 2
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #2 Добавлено: 23.06.10 09:45
  1. Var = InputBox("Введите число переменных")
  2. Dim Value(100), Rules(100), Var2(100)
А если я введу число переменных = 200 ? Или 300 ?

Ответить

Номер ответа: 3
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #3 Добавлено: 23.06.10 12:36
А если я введу число переменных = 200 ? Или 300 ?
- тогда ошибка )
в 4 строке я написал, как можно создавать динамические массивы (наверно...) в вба.
сам я не пробовал, поэтому просто закомментировал и оставил в виде подсказки...

Ответить

Номер ответа: 4
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #4 Добавлено: 23.06.10 17:03
как можно создавать динамические массивы (наверно...) в вба.

Можно-можно создавать. :-))
Dim MyArray () - объявляем массив без верхней границы, эту строку можно ‘пропустить
ReDim MyArray (4) — изменяем размер массива
Команда ReDim не только изменяет размер массива, но и удаляет из него все старые значения. Чтобы старые значения сохранить, используется ключевое слово Preserve:
ReDim Preserve MyArray (7)

Ответить

Номер ответа: 5
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #5 Добавлено: 23.06.10 17:04
Dim intArray() As Integer
Это если сразу тип нужно указать.

Ответить

Номер ответа: 6
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #6 Добавлено: 23.06.10 17:52
Ах да, оказывается, знал, просто основательно забыл.
Спасибо, теперь постараюсь подольше помнить.

Ответить

Номер ответа: 7
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #7 Добавлено: 24.06.10 20:29
Да всегда пожалуйста. :-) Спрашивайте, напомним. :-)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам