2013-10-01 6 views
0

Я создал надстройку с использованием VBA, которая представляет собой книгу с расчетами. Надстройка имеет пользовательскую форму для извлечения соответствующей информации из базы данных доступа и заполняет книгу. После заполнения данных вычисления выполняются в Sheet1. Мне нужно вставить рабочий лист «Sheet1» из таблицы надстроек в новую книгу по запуску макроса надстройки.Выберите рабочий лист в надстройке Excel для запуска макроса VBA

Однако, когда я запускаю надстройку, рабочий лист скрыт, поэтому мои данные не обновляются. Я получаю эту ошибку: «Ошибка выполнения« 1004 »: метод« Рабочие листы »объекта« _Global »не удался».

Может ли кто-нибудь сказать мне, как работать с надстройкой, которая имеет рабочий лист, где выполняются необходимые вычисления?

Интригующая часть - это когда я загружаю надстройку после удаления ее из списка надстроек в excel, она отлично работает. Но когда я повторно запускаю макрос, рабочий лист становится скрытым, поэтому появляется такая же ошибка. Я довольно новичок в VBA, поэтому любые предложения будут оценены!

Редактировать

Код:

Private Sub OptionOK_Click() 'On selecting OK from userform 
    Dim ws1 As Worksheet 
    Sheets("Sheet1").Visible = True 
    Set ws1 = Worksheets("Sheet1") 

'User Form Validation 
    If Trim(Me.cboData.value) = "" Then 
    Me.cboData.SetFocus 
    MsgBox "Please complete the form" 
    Exit Sub 
    End If 

'copies data to given cell in excel  
    ws1.Range("A1").value = Me.cboData.value 

'To copy selection from "Sheet1" into new workbook 
Workbooks("myaddin.xlam").Sheets(1).Copy 
End Sub 

Я получаю ошибку на ...> Простыни ("Лист1") Visible = True..

ответ

3

Я только что понял, что мне пришлось использовать «ThisWorkbook» в коде VBA надстройки.

Set ws1 = ThisWorkbook.Sheets ("Sheet1")

VBA код в рабочей книге следует использовать «ThisWorkbook», чтобы ссылаться на листы или диапазонов внутри надстройки.

0

Если вы знаете, что это за лист, и у вас есть доступ к надстройке, просто убедитесь, что он виден перед строкой, которая выдает ошибку.

Sheets("Sheet3").Visible = True 

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


Вы уверены, что эта линия является правильным:

Workbooks("myaddin.xlam").Sheets(1).Copy 

Перед тем, как были ссылки на имя листа теперь ваши ссылки на положение листа в книге.

+0

Спасибо, я попробовал. У меня есть Dim WS1 As Worksheet Таблицах ("Лист1") Visible = True Set ws1 = Worksheets ("Лист1") Я получаю эту ошибку:. Runtime Ошибка 9, Подстрочный вне диапазона. Я тоже искал в Интернете, но я не вижу никаких связанных решений. – VBAlearner

+0

Спасибо за редактирование. cbo - это combobox в пользовательской форме. me.cboData относится к combobox, который использует базу данных доступа для формирования списка. – VBAlearner

+0

Да, я считаю, что мы можем ссылаться на рабочие листы («Лист1») или рабочие листы (1). Как я уже упоминал, надстройка отлично работает, когда я удаляю ее и снова устанавливаю в excel. Он зависает, когда я запускаю макрос после первого раза. – VBAlearner

Смежные вопросы