VBA - Какой лист называется макросом, тогда что-то сделать - PullRequest
0 голосов
/ 25 апреля 2018

Есть ли другой способ, кроме Activesheet.Name, узнать, какой лист вызывает макрос?

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

Это работает, если я запускаю макрос по одному на каждом листе, но я хочу иметь возможность запускать их все одновременно.

Пример: у меня есть входной лист "Run1", который содержит кнопку, затем, когда симуляция завершена, она делает что-то на листе с именем "Results1"

Я создал дубликаты листов "Run1" и "Results1 "и увеличил число в конце

If ActiveSheet.Name = "Run1" Then
    t = 1
End If
If ActiveSheet.Name = "Run2" Then
    t = 2
End If
If ActiveSheet.Name = "Run3" Then
    t = 3
End If

If ActiveSheet.Name = "Run4" Then
    t = 4
End If

If ActiveSheet.Name = "Run5" Then
    t = 5
End If

If ActiveSheet.Name = "Run6" Then
    t = 6
End If

Worksheets("Results" & t).Activate

For Each A In ActiveSheet.ChartObjects("Chart 9").Chart.SeriesCollection
    A.Delete
Next A

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

1 Ответ

0 голосов
/ 25 апреля 2018

Сначала прочитайте эту ссылку и настройте свой код, чтобы удалить все ненужные действия выбора / активации: Как избежать использования Select в Excel VBA

Затем вы можете сделать что-то вроде этого:

If ActiveSheet.Name Like "Run*" Then
    With Worksheets("Results" & Replace(ActiveSheet.Name, "Run", ""))
        '? all your charts are called "Chart 9"?
        For Each A In .ChartObjects("Chart 9").Chart.SeriesCollection
            A.Delete
        Next A
        .Activate
    End With
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...