2013-10-15 5 views
0

У меня есть следующий код, который работает во всех других обстоятельствах, кроме одного, где он возвращает ошибку «Невозможно перемещать фокус, потому что он невидим, не включает или не вводит который не принимает фокус ». Данные на листе состоят только из основных чисел и слов. Моя цель - выбрать диапазон из одной рабочей книги и вставить ее в другую. Похоже, что excel не распознает что-либо в ячейках, хотя на самом деле это так. Кто-нибудь знает, почему это может произойти? Заранее спасибо.Ошибка: не удается переместить фокус, потому что он невидим.

Set Users = Application.Workbooks.Open(PathA) 
     With Prices 
     .Sheets("Sheet").Range("A:AJ").Select 
     Selection.Copy 
     End With 
    'Set Risk = Application.Workbooks.Open(PathX) 
     With Risk 
     .Sheets("Sheet").Range("A1:AJ1048576").PasteSpecial Paste:=xlPasteAll 
     .Save 
     ' .Close 
     End With 
     Users.Close 
+0

[ИНТЕРЕСНО ЧИТАТЬ] (http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select) –

+0

Вы открываете книгу «Пользователи», но копируете ее из «Цены» - не можете сказать, связано ли это к вашей проблеме. –

+0

Это интересно. – user2832896

ответ

0

это выглядит, как будто кто-то был один и тот же вопрос и был в состоянии решить это на форуме MSDN

http://social.msdn.microsoft.com/Forums/office/en-US/3263b079-7e4f-452c-8dcc-92c682b8370b/excel-form-cant-move-focus-to-the-control-because-it-is-invisible-not-enabled-or-of-a-type-that?forum=exceldev

может быть, это исправление будет применяться к вашей ситуации тоже.

... ИТАК на этой странице, один парень имеет кладж, что, казалось, работать на него:

Ошибка:

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

Как исправить

1. Выберите объект с проблемой, например формы или контроля.

2. В окне свойств выберите имя объекта и переименуйте добавление «x» в конец, например. Переименуйте CPanel в CPanelx.

3. Сохраните форму.

4. Теперь переименуйте CPanelx обратно в CPanel.

5. Запустите форму.

6. Проблема решена.

Что-то вверенное с Excel VBA, не уверен, что !, но это заставит вас работать снова. Стив Д.

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

В обычном режиме элементы управления ActiveX предназначены только для активации, а не для выбора, есть разница. Если вы partifcularly хотите выбрать элемент управления (вручную или с кодом), сначала попробуйте перенести Excel в режим разработки.

См. Также раздел «Почему я не могу выбрать форму и элементы управления ActiveX?«В справке Excel (а не помощь УВА)

Питер Торнтон

+1

Вместо downvoting, я думаю, что попрошу вас в первую очередь. :) Белые ссылки - это ответы низкого качества. Возможно, вы захотите улучшить свой ответ и добавить к нему больше смысла, чтобы в будущем, если связь сломалась, мы все равно знаем, что это за решение. Это также поможет будущим пользователям. –

+0

Большое спасибо за ваш ответ. Я видел это, и я думаю, что это относится к формам или элементам activeX, а не к выбору, копированию и вставке из одного места в другое. – user2832896

0

» Ошибка выполнения „-2147352565 (8002000b)“: Не удается переместить фокус управления, поскольку она невидима, не включен или типа, который не принимает фокус. «Можно преодолеть, но последовательно определить область, которую вы хотите выбрать. Очевидно, что некоторые могут сделать это в любом случае, но для этого конкретного экземпляра необходимо преодолеть эту проблему. для копирования из одной книги в другую и приклеивания, где U является листом, считается «невидимым».

 Dim U As Workbook 
     Dim Us As Worksheet 
    Set U = Application.Workbooks.Open(Path) 
    Set Us = U.Worksheets("sheet") 
    With Us 
     .Range("A:AJ").Select 
     Selection.Copy 
    End With 
     U.Close SaveChanges = True 
    With DestinationWorkbook 
     .Sheets("sheet").Range("A:AJ").PasteSpecial Paste:=xlPasteAll 
     .Save 
    End With 
Смежные вопросы