2013-10-15 23 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

也许这个修补程序将适用于你的情况了。

... OK,这样页面上,一个人有一个杂牌,似乎为他工作:

错误:

不能将焦点移到控制,因为它是不可见,未启用或不接受焦点的类型。

如何解决

1.选择的问题,例如对象窗体或控件。

2.在属性窗口中,选择对象的名称并重命名,在末尾添加“x”,例如,将CPanel重命名为CPanelx。

3.保存表格。

4.现在将CPanelx重命名为CPanel。

5.运行您的表单。

6.问题解决。

与Excel VBA扭曲的东西,不知道什么!,但这会让你再次工作。 史蒂夫D.

,然后别人描述的根本问题,但使用的设计模式,这似乎像它可能击败在VBA自动化的目的,他的解决方案涉及,但主持人很喜欢看他的回答比较好,所以这里也是如此

在正常使用情况下,activeX控件仅用于激活,而不是选中,这是有区别的。如果您一定要选择控件(手动或使用代码),请尝试首先将Excel设置为设计模式。

另请参阅主题“为什么我不能选择窗体和ActiveX控件?“在Excel的帮助下(没有VBA的帮助)

彼得·桑顿

+1

而不是downvoting,我想我会先要求你。 :)裸链接是低质量的答案。您可能想要改进您的答案并为其添加更多含义,以便将来如果链接断开,我们仍然知道解决方案是什么。这也将有助于未来的用户。 –

+0

非常感谢您的回答。我确实看到了这一点,我认为这是参考form或activeX控件,而不是从一个地方选择,复制和粘贴到另一个地方。 – user2832896

0

”运行时错误‘-2147352565(8002000b)’:不能将焦点移到控制,因为它是无形的,没有启用或者不接受焦点的类型“可以被克服,但是可以顺序地定义你想要选择的区域,显然有些人可以在任何情况下这样做,但是这个具体的实例需要克服这个问题。用于从一个工作簿复制到另一个工作簿并粘贴,其中U是表格excel发现的“隐形”

 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 
相关问题