如果不激活工作表,我可以将工作表中的单元格设置为所选单元格吗?

时间:2015-11-02 12:37:49

标签: excel vba excel-vba

在我正在创建的工作簿中,我创建了一个过程,该过程循环遍历几个工作表,清除了一些范围++,为新的一年准备工作簿。但是,我想在工作表中设置一个给定的单元格,例如F5在转到下一张工作表之前是活动的,因为用户最有可能在移动到工作表时开始输入数据。

但是,尝试将.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

试图弄清楚为什么这不起作用我最终遇到了this documentation-page from Microsoft,其中指出:

  

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

我认为在除活动工作表之外的任何内容上使用Select都不起作用。该页面没有明确说明Activate的任何内容,但我假设错误的原因我会变得相同。

现在,我的问题是 - 有没有办法在非活动工作表中设置活动单元格而不先激活它?如果没有,是否会激活工作簿中的每个工作表来设置活动单元是非常耗费资源的?我想我可以自己查看后者,但任何输入都会很有趣。

1 个答案:

答案 0 :(得分:1)

无需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 Method (Excel)