Я работаю над проектом в Excel, используя VBA. Я получаю листы из других рабочих тетрадей, что занимает немного времени. Для удобства пользователей я бы хотел показать картинку с надписью «Загрузка», пока приложение получает разные листы. Моя проблема в том, что картинка не отображается до того, как саб закончил. Я попытался устранить неполадки самостоятельно.
Я попытался запустить код, чтобы вставить картинку в другой вызываемый Sub. Я пытался добавить "DoEvents". Я пытался добавить приложение ждать. Я попробовал "ActiveWindow.SmallScroll" и "Application.Calculate" все без какой-либо удачи. Я не могу понять, почему картинка не будет отображаться при запуске кода.
Если я добавлю точку останова в коде, картинка покажет, когда я этого захочу. У меня нет идей и надеюсь, что вы мне поможете.
Это фрагмент моего кода:
Sheet1.Activate
Application.Goto Reference:=Range("a1"), Scroll:=True
PicLoad = "PicLoad"
Sheet1.Pictures.Insert(Pictures & PicLoad & ".jpg").Name = PicLoad & "_picture"
Sheet1.Pictures(PicLoad & "_picture").Width = Application.Width
Sheet1.Pictures(PicLoad & "_picture").Left = 0
Sheet1.Pictures(PicLoad & "_picture").Top = 0
Sheet1.Shapes(PicLoad & "_picture").Line.Visible = msoTrue
Sheet1.Shapes(PicLoad & "_picture").Line.ForeColor.ObjectThemeColor = msoThemeColorText1
Sheet1.Shapes(PicLoad & "_picture").Line.Weight = 1
If ThisWorkbook.Path = requiredPath Then
Application.Run "Module4.HideCal"
For Each ws In ThisWorkbook.Worksheets 'Sletter alle worksheets undtagen nummer 1
If ws.Index <> 1 Then
ws.Delete
End If
Next
thisName = ThisWorkbook.Name
Workbooks.Open (requiredPath & "\" & fileComponents & "*.xl??"), ReadOnly:=True, CorruptLoad:=xlRepairFile 'f?r componenter ind
fileComponents = ActiveWorkbook.Name
total = Workbooks(thisName).Worksheets.Count
Workbooks(fileComponents).Worksheets(1).Copy _
after:=Workbooks(thisName).Worksheets(total)
Workbooks(fileComponents).Close
*Continues getting worksheets from different workbooks..
Module4.HideCal содержит:
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Все работает точно так, как должно. Единственная проблема заключается в том, что изображение не отображается до тех пор, пока саб не закончится. Я хотел бы показать это перед оператором If.
С наилучшими пожеланиями