Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
Bober

Можно ли реализовать Goto из одной процедуры в другую?

02.07.2011, 18:42. Показов 4840. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. Требуется реализовать следующий код
Visual Basic
1
2
3
4
5
6
7
8
9
dim a as integer
 
for i = 1 to n
b = 2*C
if b > 1000 then
goto i ' Именно i 
end if 
next i
1:
Проблема в том что идти нужно не на метку 'i' а ее значение

2. Можно ли реализовать Goto из одной процедуры в другую
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub a()
for i = 1 to n
b = 2*C
next i
Goto 1
end sub
 
Sub b()
''''
1:
''''
end sub
3. Ну и на последок если вам еще не надоело......
НЕ РАБОТАЕТ
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
dim a(3) as integer
 
for a(1) = 1 to n
for a(2) = 1 to n
for a(3) = 1 to n
 
'Условие
 
next a(3)
next a(2)
next a(1)
Большое человеческое спасибо!
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.07.2011, 18:42
Ответы с готовыми решениями:

можно ли в с++ вызвать переменную из одной функции в другую т.е. мы переменну задали в одной функции а использовали в другой... и как это реализовать?
можно ли в с++ вызвать переменную из одной функции в другую т.е. мы переменну задали в одной функции а использовали в другой... и как это...

Из процедуры с помощью GOTO запустить другую процедуру
возможно ли сделать, чтобы из процедуры с помощью GOTO запустить другую процедуру? или как вообще из одной процедуры запускать другую?

Нужно чтобы после завершения одной процедуры можно было выполнить другую не выходя из программы
Не получается ввести данные больше чем одного нападающего, нужно чтобы после завершения одной процедуры можно было выполнить другую не...

10
0 / 0 / 1
Регистрация: 11.10.2010
Сообщений: 363
03.07.2011, 13:33
Проблема в том что идти нужно не на метку 'i' а ее значение
что это значит?

goto использовать не надо
чтобы перейтивызвать другую процедуру:
module1.b

насчет 3 вопроса: этот код не вяжется не только с vba, но и с логикой.
Visual Basic
1
2
3
4
5
6
7
8
dim a(3) as integer
for a(1) = 1 to n'А ЧЕМУ РАВНО N?
for a(2) = 1 to n'ВЫ ЖЕ УЖЕ ИСПОЛЬЗУЕТЕ ПЕРЕМЕННУЮ a В ПРЕДЫДУЩЕМ ЦИКЛЕ
for a(3) = 1 to n
'Условие
next a(3)
next a(2)
next a(1)
0
snov
03.07.2011, 15:00
Как сказал Дейкстра: использование оператора безусловного перехода является плохим(!) стилем программирования. И доказал, что можно и без него все реализовать.
Messir
03.07.2011, 19:41
2 snov:
> ...И доказал, что можно и без него все реализовать
гланды тоже можно через задний проход удалять... и движок в машине через выхлопную трубу ремонтировать... только это не всегда удобно...
конечно, goto лучше не использовать, но иногда без него гораздо сложнее, чем с ним... Особенно в vb6/vba и подобных, где нету ни AndAlso/OrElse, ни человеческой обработки ошибок, ни многих других удобств...
Bober
03.07.2011, 22:43
1. Я знаю что плохой стиль, но в данном случае отличный, просто замечательный Это упрощенный пример.
1.1 на пример если i = 1 идти на метку 1 если i = 2 идти на метку 2 b т.д.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
dim a as integer
for i = 1 to n
b = 2*C
if b > 1000 then
goto i ' Именно i 
end if 
next i
1:
 
2:
 
3:
2. Нужно не просто перейти в другую процедуру, а именно на конкретную метку в этой процедуре.
3. Это упрощенный пример. С логикой все нормально, а со временем писец, нету!!!!
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for a(1) = 1 to n(1)' например 10
 
for a(2) = 1 to n(2)'
'1 Условие нет goto 1
'2 Условие нет goto 2
for a(3) = 1 to n(3)
'3 Условие нет goto 2
'4 Условие нет goto 3
 
'5 Условие нет goto 3
' сall Тратата 
 
3:
next a(3)
2:
next a(2)
1:
next a(1)
Если есть еще какие-нибудь соображения буду ПРИЗНАТЕЛЕН
P.S функцию округление вверх и вниз не подскажите + Выделение целой и дробной части
Bober
03.07.2011, 22:48
Johny Walker где ты друг?

И еще надо так можно сделать?

for i = 40 to 1
Bober
03.07.2011, 22:58
Кажется нашел ответ на последний вопрос?

ОКРВВЕРХ - Ceiling
ОКРВНИЗ - Floor

st= - 0.1
i=5
do while i >= 1
i=i-st
loop
0 / 0 / 1
Регистрация: 11.10.2010
Сообщений: 363
04.07.2011, 00:36
да, а если меток будет 1000, то ты 1000 раз напишешь goto?
ps в любой книге. это пример из стандартного help excel
Int Function, Fix Function Example
This example illustrates how the Int and Fix functions return integer portions of numbers. In the case of a negative number argument, the Int function returns the first negative integer less than or equal to the number; the Fix function returns the first negative integer greater than or equal to the number.
Visual Basic
1
2
3
4
5
6
7
8
9
Dim MyNumber
MyNumber = Int(99.8)    ' Returns 99.
MyNumber = Fix(99.2)    ' Returns 99.
 
MyNumber = Int(-99.8)    ' Returns -100.
MyNumber = Fix(-99.8)    ' Returns -99.
 
MyNumber = Int(-99.2)    ' Returns -100.
MyNumber = Fix(-99.2)    ' Returns -99.
0
22 / 5 / 1
Регистрация: 05.09.2010
Сообщений: 370
04.07.2011, 06:29
> И еще надо так можно сделать? for i = 40 to 1
Visual Basic
1
For i = 40 To 1 Step -1
> Если есть еще какие-нибудь соображения...
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
for a1 = 1 to n1
 for a2 = 1 to n2
  if  Условие1 then
   for a3 = 1 to n3
     if Условие2 and Условие3 and Условие4 then 
      сall Тратата 
      exit for 
     end if 
   Next a3    
  end if
 Next a2
Next a1
0
2 / 2 / 1
Регистрация: 10.04.2011
Сообщений: 415
04.07.2011, 15:48
Я здесь :-)
1.Твоя мысль понятна, но переход ни по значению переменной, ни использование переменной цикла элемента массива, ни goto из одной процедуры в другую невозможны (последнее просто ужасно с точки зрения стиля программирования, такое ощущение, что автор сам незнает, чего он хочет) в VBA невозможны - это ограничение среды, значит, нужно действовать по-другому. Кроме того, делать goto изнутри цикла for...next - он типа больше не нужен? Так и пиши - exit for, самому же понятнее будет.
В твоем случае, как я понял, чем меньше i, тем больше кода должно выполниться (то есть начиная с метки i и дальше). К сожалению, не зная, что конкретно делается операторами, помеченными 1:, 2: и так далее, но уверен - можно сделать по-другому. В VBA достаточно возможностей - посмотри подсказку по конструкции Select Case ... End Select, она как раз предназначена для сложных случаев выбора.
0
Bober
04.07.2011, 21:25
Переход тему GOTы
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.07.2011, 21:25
Помогаю со студенческими работами здесь

Ссылка goto из одной функции в другую
Доброго времени суток! Возник следующий вопрос: неужели имея в программе 2 функции, нельзя из одной из них методом goto перейти в другую...

Передать массив из одной процедуры в другую
Здравствуйте, уважаемые форумчане. Помогите, пожалуйста, советом. Как правильно передать динамический массив из одной процедуры в другую?...

Перетащить стринговую переменную из одной процедуры в другую
Доброго времени суток. Пытаюсь что-то сделать в QT и столкнулся с непреодолимой проблемой. В одной процедуре вычиляется путь к текстовому...

Как перенести значение из одной процедуры в другую?
Есть две процедуры и мне надо перенести значение из одной локальной переменной в другую. Как это можно сделать?

Как повторить выполнение кода из одной процедуры в другую?
У меня по нажатию кнопки выполняется определенный код как сделать чтобы по нажатию клавиши Enter в поле Edit (LabeledEdit) выполнился...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru