Страницы: 1
RSS
[ Закрыто ] Макрос выполнять на листе, соответствующем нажатой кнопке
 
Здравствуйте!
Помогите, пожалуйста, с "грамматикой" кода.
Ваяю примерно так:
Код
Sub Start()

    Dim i As Integer, j As Integer, a As Long, x As New Collection, y As Range, N As Long
    N = CommandButton.Application.Caller
    
    With Sheets(N)
...
нужно, чтобы макрос выполнялся  на листе, одноимённом с названием кнопки CommandButton ActiveX (свойство "Caption").
Прошу помочь с определением переменной "N".
Спасибо.
 
Код
Private Sub CommandButton1_Click()
N = CommandButton1.Caption
Start N
End Sub
Sub Start(N)
MsgBox N
End Sub
 
Что-то не получается...
На самом первом, скажем, "нулевом", листе находится с десяток кнопок, а в предложенном макросе я вижу только одну - CommandButton1_Click()
У меня непонятка, как задействовать оставшиеся CommandButton2, 3, 4 и т.д., чтобы при нажатии на кнопку с надписью "6" макрос отрабатывал на листе "6".
 
Цитата
На... листе находится с десяток кнопок, а в предложенном макросе я вижу только одну
Никто не мешает сделать не одну... только немножечко подумать над предложенным вариантом.

Можно на кнопках писать, например, анекдоты о каждом листе или рецепты блюд - на работоспособности не скажется :)
Код
Sub CommandButton1_Click(): Call WorkInSheetX("отчет"): End Sub
Sub CommandButton2_Click(): Call WorkInSheetX("Лист6"): End Sub

Sub WorkInSheetX(sName As String)
    With Worksheets(sName)
        ' ......
    End With
End Sub
 
чтобы нажать кнопку - нужно открыть лист, в котором она лежит
кнопка нажата в активном листе (Activesheet) какие сложности при работе с активным листом???
вот с неактивным требуются минимальные но дополнительные усилия, а с активным какие сложности?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Игорь, все кнопки на одном листе  (эдакая кабина пилота :) )
 
Ладно, чтобы совсем было ясно, раскрою секрет:
 
ваяю простую детскую развлекалку - смена картинки. В приложенном файле по нажатию кнопки картинка меняется на другую, с листа2.
На листах 3, 4, 5 и т.д. (их ещё нет) будут другие картинки, а на листе 1 будут ещё кнопки. По нажатию определённой (например 6-й) кнопки картинка на первом листе заменится картинкой с 6-го листа. Вот мне и нужно переделать существующий макрос в модуле так, чтобы он был только один, но работал по-разному от разных кнопок - брал картинку с разных листов.
Благодарю всех за участие.

p.s Приглашаю всех желающих улучшить мою игрушку.
 
MrBrown, добавите файл с еще одной другой картинкой не 100 на 100... а "анимация" (скорость работы) обязательная?
Изменено: Mershik - 14.08.2020 21:14:29
Не бойтесь совершенства. Вам его не достичь.
 
О картинках вопрос удален - не по теме.

MrBrown, непонятно, предложенные решения поняли? Применяете?
 
vikttur, Да вот, что-то не получается. С грамматикой кода я слабоват. Пробую дальше.
 
Цитата
Mershik написал:
а "анимация" (скорость работы) обязательная?
Mershik, честно говоря, сам ещё не понял. Думаю, что скорость должная быть максимальной. Замедлить всегда можно.
 
MrBrown, просто я не пойму зачем вырисовывать все эт картинки если можно очистить текущий лист и просто скопировать диапазон с нужного листа и все...может конечно я не улавливаю логики
Не бойтесь совершенства. Вам его не достичь.
 
Будущий, как говорится, интерфейс, должен иметь такой вид при четырёх картинках (см. файл)
Изменено: MrBrown - 14.08.2020 21:45:45
 
Анимация и кнопки, запускающие макрос на разных листах  - что общего?
Страницы: 1
Наверх