我可以设置一个表格中的单元格作为选定的一个,而不激活表单?

在我正在创build的工作簿中,我创build了一个循环遍历几个工作表的过程,清除了一些范围++,准备工作簿一年。 但是,我想在工作表中设置给定的单元格,例如F5作为活动单元格,然后再移动到下一个工作表,因为这是用户在移动到工作表时最有可能开始input数据的地方。

但是,试图将.Select.Activate放到下面的代码的第5行失败与Select / Activate method of Range class failed

  For Each ws In ThisWorkbook.Worksheets If InStr(1, ws.CodeName, "Veke_", vbTextCompare) > 0 And Len(ws.CodeName) = 7 Then Call lås_opp_ark(ws) Call oppdater_ark_for_nytt_år(ws, førsteSkiftIVeka(dato)) ws.Range("F5").Select Call lås_ark(ws) End If Next ws 

试图找出为什么这不起作用,我最终遇到了这个微软的文档页面,其中指出:

在成功使用Selection属性之前,必须激活工作簿,激活或select工作表,然后使用Select方法select范围(或其他对象)。

我认为使用Select除了活动工作表之外的任何东西都是行不通的。 该页面没有明确说明有关Activate任何信息,但我认为我得到的错误原因是一样的。

现在,我的问题是这样的 – 有没有办法将活动单元格设置为非活动工作表而不先激活它? 如果没有,将激活工作簿中的每个工作表设置活动单元是非常资源密集型? 我想我可以自己检查后者,但是任何input都会很有趣。

不需要select单元格,而是激活它。 尝试这个:

更换:

 ws.Range("F5").Select 

有了这个:

  Application.Goto ws.Cells(1), 1 'This activates ws and scrolls to place cell `A1` at the top of the window Application.Goto ws.Range("F5") 'This selects Cell `F5` 

请参阅Application.Goto方法(Excel)