Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2010, 22:32   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Назначить кнопке, переход

Обычно кнопке назначают выполнение макроса, а как назначить переход на выполнение определнной строки макроса?
Например:
Нажатие кнопки - GoTo метка
valerij вне форума Ответить с цитированием
Старый 18.01.2010, 23:00   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

задача не из простых (по крайней мере для меня). И самое сложное в этом деле ЗАЧЕМ??? Почему именно на метку? Почему просто не запустить процедуру?
Возможно у меня даже ответ есть - "потому что так написано..."
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 18.01.2010, 23:06   #3
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

А если прописать в коде макроса это самое GoTo? Если кнопка одна и используется только для этого перехода, то это можно написать в коде. А если не только для этого, можно сделать вторую кнопку
motorway вне форума Ответить с цитированием
Старый 18.01.2010, 23:10   #4
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Почему просто не запустить процедуру?
Потому, что [A22] = 0 в процедуре, а мне надо, при нажатии кнопки выпонялось, так(устраивать цикл в модуле не подходит):
Код:
[A22].Offset(dat * 44) = 0
Цитата:
А если прописать в коде макроса это самое GoTo?
А как?
valerij вне форума Ответить с цитированием
Старый 19.01.2010, 00:08   #5
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Ну в VBA есть GoTo и соответственно метка, ставите после Goto Label1 Label1:
и все. Но если код должен выполняться только с какого-то места, почему нельзя просто остальное убрать, или сделать отдельную функцию или попробовать определять, что код вызван именно после нажатия кнопки и сделать условие?
motorway вне форума Ответить с цитированием
Старый 19.01.2010, 00:44   #6
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от motorway Посмотреть сообщение
Ну в VBA есть GoTo и соответственно метка, ставите после Goto Label1 Label1:
и все. Но если код должен выполняться только с какого-то места, почему нельзя просто остальное убрать, или сделать отдельную функцию или попробовать определять, что код вызван именно после нажатия кнопки и сделать условие?
Я, не понял, напишите код:
Код:
IF Нажатие_Кнопки Then [A22].Offset(dat * 44) = 0
valerij вне форума Ответить с цитированием
Старый 19.01.2010, 01:40   #7
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Может я чегото не понял,но сделал бы так

Код:

Public flag As Boolean

 Sub Macro()
Select Case flag
 
Case True
   
GoTo 10

End Select
    

MsgBox "Макрос выполняется с начала"


    
10
[A22].Offset(dat * 44) = 0

MsgBox " Макрос выполняется с [A22].Offset(dat * 44) = 0"

End Sub

Код:
Private Sub CommandButton1_Click()
flag = True  ' Выполнить с  10 метки

Macro

End Sub

Private Sub CommandButton2_Click()

flag = False

Macro

End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 19.01.2010, 01:53   #8
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
сделал бы так
Все равно не понял, вот фрагмент рабочий, все лишнее убрал, куда мне вставить?
Код:
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Excel.Range)
For dat = 0 To 30
[A22].Offset(dat * 44) = [F34].Offset(dat * 44) - Evaluate("ИТОГО_ПРЕДЫДУЩ.")
IF Нажатие_Кнопки Then [A22].Offset(dat * 44) = 0
Next
End Sub
valerij вне форума Ответить с цитированием
Старый 19.01.2010, 10:58   #9
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

В модуле
Код:
Public Нажатие_Кнопки As Boolean
Два варианта Либо одна кнопка
Код:
Private Sub CommandButton1_Click()
Нажатие_Кнопки  = True
End Sub
Либо две
Вкл и Выкл
Код:
Private Sub CommandButton2_Click()
Нажатие_Кнопки  = False
End Sub
Код:
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Excel.Range)
For dat = 0 To 30
[A22].Offset(dat * 44) = [F34].Offset(dat * 44) - Evaluate("ИТОГО_ПРЕДЫДУЩ.")
IF Нажатие_Кнопки Then [A22].Offset(dat * 44) = 0
Next
 Нажатие_Кнопки  = False  'Если две эту строку убрать
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 19.01.2010, 15:14   #10
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
В модуле
Сделал так, не работает, кнопка, только одна.
В модуле:
Код:
Public Нажатие_Кнопки As Boolean
Private Sub CommandButton1_Click()
Нажатие_Кнопки = True: MsgBox 5555 'Для проверки, Работает
End Sub
В книге, опустим условие IF, зачем оно:
Код:
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Excel.Range)
For dat = 0 To 30
[A22].Offset(dat * 44) = [F34].Offset(dat * 44) - Evaluate("ИТОГО_ПРЕДЫДУЩ.")
Нажатие_Кнопки: [A22].Offset(dat * 44) = 0: MsgBox 7777 'Не Работает
Next
 Нажатие_Кнопки  = False  'Так и без нее, не работает
End Sub
valerij вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма-Добавить объект-Назначить слушатель события tolikman Microsoft Office Excel 6 10.09.2008 16:18
Как клавиши F, назначить макрос? valerij Microsoft Office Excel 7 06.06.2008 10:08
Как в Excele2007 назначить макрос на пункт пользовательского меню Suroejka Microsoft Office Excel 3 28.05.2008 14:02
Назначить макрос Nando Microsoft Office Excel 5 07.01.2008 14:33
Как программно назначить привилегию или писать в реестр через WinApi ? UnD)eaD)Snake Win Api 16 27.09.2007 20:20