индикатор выполнения не вызывается макросом - PullRequest
0 голосов
/ 15 апреля 2019

Я протестировал и попытался внедрить индикатор выполнения в мой макрос.Но почему-то индикатор выполнения не отображается, и сейчас я пытаюсь выяснить, почему.

Я реализовал индикатор выполнения и код во внешнем файле, где находится макрос, загружаемый при обновлении шаблонов.Кроме того, в макросе есть строка application.screenupdate = false.

Поэтому мне интересно, влияет ли эта последняя строка на индикатор выполнения.

Я пробовал это в самом шаблоне.индикатор выполнения отображается на 0%, но больше ничего не происходит.Когда я отменяю индикатор выполнения (нажмите «x» в правом верхнем углу индикатора выполнения), макрос продолжается.

это макрос, который выполняется во внешнем файле сценария:

Sub vernieuwalles(mytemplate As String)
Dim workbook_Name As Variant
Dim workbookdirectory As String
Dim activewb As String
Dim i As Integer
Dim counter As Integer

  Windows(mytemplate).Activate

  On Error GoTo Err_

UserForm1.Show

  'Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual

'  Call SheetOpschonen


counter = 0
Call progress

  Call datawissen

counter = counter + 1
Call progress

  For i = 1 To Worksheets.Count
    If Worksheets(i).Name = "Output Totaal" Then Call ASW
    Next i

counter = counter + 1
Call progress


  Call dataplaatsen

counter = counter + 1
Call progress

  Call kolomtitels

counter = counter + 1
Call progress

  Call toevoegen

counter = counter + 1
Call progress

  Call maaktabel

counter = counter + 1
Call progress

  Call refreshpivots

counter = counter + 1
Call progress

If ActiveWorkbook.ReadOnly = True Then ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite

ActiveWorkbook.Application.DisplayAlerts = False

activewb = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5)

workbookdirectory = "M:\Commercie\Marktdata\IRi\Segment Ontwikkeling\"

workbook_Name = Application.GetSaveAsFilename(fileFilter:="Excel binary sheet (*.xlsb), *.xlsb", InitialFileName:=workbookdirectory & activewb)

If workbook_Name <> False Then ActiveWorkbook.SaveAs Filename:=workbook_Name, FileFormat:=50

ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly

ActiveWorkbook.Application.DisplayAlerts = True

Exit_:
  Application.StatusBar = ""
  Application.ScreenUpdating = True
  Application.Calculation = xlCalculationAutomatic
  Exit Sub

Err_:
  Call MsgBox(Err.Number & vbCrLf & Err.Description)
  Resume Exit_

Application.Calculation = xlCalculationAutomatic

End Sub

Для управления индикатором выполнения у меня есть этот код:

Sub code()

Dim pctCompl As Single

    pctCompl = counter / 7
    progress pctCompl

If pctCompl.Value = 1 Then Unload UserForm1

End Sub

Sub progress(pctCompl As Single)

    UserForm1.Text.Caption = pctCompl & "Completed"
    UserForm1.Bar.Width = pctCompl

    DoEvents
    'UserForm1.Hide
    End Sub

шаблон self имеет этот код для запуска файла сценария:

Option Explicit
Sub vernieuwalles()
Dim myTemplate As String: myTemplate = ActiveWorkbook.Name
Dim myTool As String: myTool = "refresh_segment_template.xlsm"


  Application.ScreenUpdating = False

  Workbooks.Open GetPath & myTool
  Application.Run myTool & "!vernieuwalles", myTemplate

  Call Windows(myTool).Close(False)

  Application.ScreenUpdating = True

End Sub

Private Function GetPath() As String
Dim myPosition As Integer
Dim myPath As String: myPath = ActiveWorkbook.Path

  myPosition = InStr(StrReverse(myPath), "\") - 1
  myPosition = Len(myPath) - myPosition

  GetPath = Mid(myPath, 1, myPosition - 1) & "\XLAM\"

End Function

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

Форма пользователя (также) включена во внешний файл шаблона.Сценарий работает нормально, за исключением индикатора выполнения, который не отображается.И я не могу найти причину этого.

Метод обновления индикатора выполнения вдохновлен тем, что написано в учебном пособии на веб-сайте wellsr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...