"Викликаний об'єкт відключився від своїх клієнтів."


1

У мене є кнопка, яка запитує на введення та створює нову вкладку. Перший запуск працює чудово, але наступні запуски видають цю помилку:

введіть тут опис зображення

Ось код:

Sub btnAddProject()
    Dim template As Worksheet
    Dim newSheet As Worksheet
    Dim newName As String


    newName = Application.InputBox("Enter Project Name")        'get name
    Worksheets("Template").Visible = True                       'Unhide template
    Set template = ActiveWorkbook.Sheets("Template")            'identify template
    template.Copy After:=Sheets(Sheets.Count)                   'create copy
    Set newSheet = ActiveSheet                                  'identify new sheet
    newSheet.Name = newName                                     'rename sheet
    'deleteNames (newSheet.Name)                                'delete copied named ranges with worksheet scope
    newSheet.Range("D2").Value = newName                        'Change header on new sheet
    Worksheets("Template").Visible = False                      'Hide template
    Worksheets("Consolidated Grid").Activate                    'switch back to dashboard
    updateProjectIndex (newName)
End Sub

Помилка накидається, newSheet.Name = newNameі вона залишає мені аркуш з назвою "Шаблон (2)"

Що це викликає?

У випадку, якщо це доречно, ось updateProjectIndexпідпункт, який в основному лише додає новий рядок до списку проектів (у двох місцях):

Sub updateProjectIndex(newName)
    Application.ScreenUpdating = False
    Sheets("Dashboard").Select

    ActiveSheet.Rows(12).Select
    Selection.Copy
    Selection.Insert Shift:=xlDown

    ActiveSheet.Range("B13").Value = newName


    Sheets("Consolidated Grid").Select

    ActiveSheet.Columns("F:F").Select
    Selection.Copy
    Selection.Insert Shift:=xlRight

    ActiveSheet.Range("G1").Value = newName


    Sheets("Dashboard").Select
    ActiveSheet.Range("B13").Select
    Application.ScreenUpdating = True
End Sub

хммм, це цікаво. Я продовжую ткнути його палицею, дякую, що подивився.
Скотт Бісон

Відповіді:


2

Ваш код для мене добре працює, хоча мені довелося видалити додаткові додаткові дзвінки (тому я видалив updateProjectIndex(newName)ІWorksheets("Consolidated Grid").Activate

Щоб налагодити помилку, спробуйте цей код у новому Excel на вашому ПК, щоб побачити, чи проблема є робочою книгою, пов’язаною з цією робочою книжкою чи Excel

Проблема в коді у випадку події

Спробуйте прокоментувати ці 2 рядки коду і подивіться, чи проблема триває чи ні. Якщо жодних проблем не виникає, коментуйте їх по черзі, поки ви не побачите помилку, і усуньте її.

Я рекомендую зробити це з копією файлу, щоб ви могли зламати його скільки завгодно!


1

Я думаю, я це зрозумів, хоча я не впевнений, чому. У мене в Workbook_Openпідпункті був такий код :

   Worksheets("Dashboard").Activate
    If InStr(Application.ActiveWorkbook.Path, "sharepoint.com") Then
        Range("1:1").Select
        Selection.EntireRow.Hidden = True

    Else
        Range("1:1").Select
        Selection.EntireRow.Hidden = False
    End If

Наміром було переконатися, що люди знають, що вони відкривають офлайн-версію. Я припускаю, що конфлікт був Worksheets.Activateтут? Може хтось може пояснити.

Так чи інакше, усунення цього проблеми, здається, вирішило проблему на 100%.

Оновлення: замінено весь код, окрім того, .Activateі він все ще працює. Я здогадуюсь, що активація робочої книги із власної програми Workbook_Open викликала певний цикл?


Просто уникайте використання .Activateвсіх разом ..
Raystafarian

Є .selectкращим? Чи вдається це те ж саме? (тобто "перехід на")
Скотт Бісон

Не забудьте уникнути подібних речей .Select- це просто уповільнює код, потребуючи возитися з електронною таблицею, роблячи все інше за кадром. Там хороший питання на StackOverflow рішення цього - stackoverflow.com/questions/10714251 / ... .
Райстафаріан

Якщо вам потрібно «переключитися на», то визначте деякі змінні для кожного об’єкта та просто використовуйте змінні замість їх активації. Ваша Range("1:1").entirerow.hidden = false
інша

1
Повернутися до панелі приладів так, це було б. Активувати
Raystafarian
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.