【问题标题】:Select method of Worksheet Class Failed Error when opening another workbook [closed]打开另一个工作簿时选择工作表类失败错误的方法[关闭]
【发布时间】:2020-05-27 19:56:33
【问题描述】:
Sub Copy()

Workbooks("Data.xlsm").Sheets("28May2020").Select

Workbooks("Data.xlsm").Sheets("28May2020").Activate

Dim lastrow As Integer

lastrow = ThisWorkbook.Sheets("COPYHERE").Cells(Rows.Count, 2).End(xlUp).Row

Sheets("COPYHERE").Range("A" & lastrow + 1).Value = Date
Sheets("COPYHERE").Range("B" & lastrow + 1).Value = Time

Range("L43:X93").Copy Worksheets("COPYHERE").Range("A" & lastrow + 2)

Sheets("COPYHERE").Select

Timer

End Sub

Sub Timer()

Application.OnTime Now() + TimeValue("00:00:30"), "Copy"

End Sub

【问题讨论】:

  • 每当我打开另一个工作簿时,我的 VBA 编码表都会显示错误。
  • 最好是avoid Select
  • 你在哪里打开另一个工作簿?
  • @braX 我正在同一个桌面上打开另一个工作簿

标签: excel vba error-handling


【解决方案1】:

Sheets("COPYHERE").Select 之前,放置一行ThisWorkbook.Activate。这将激活运行代码的工作簿。

另外看看
Sheets("COPYHERE").Range("A" & lastrow + 1).Value = Date
Sheets("COPYHERE").Range("B" & lastrow + 1).Value = Time
Range("L43:X93").Copy Worksheets("COPYHERE").Range("A" & lastrow + 2)
工作表、工作表和范围指的是 ActiveWorkbook/ActiveSheet。除非您确定这是您想要的,否则我建议您将工作表更改为 ThisWorkbook.Sheets,将工作表更改为 ThisWorkbook.Worksheet,将范围更改为 ThisWorkbook.Sheets(<sheet name>).Range(<address>)

【讨论】:

  • 感谢兄弟的建议,现在它工作正常,要么一起打开许多工作表
【解决方案2】:
Sub Copy()
Application.ScreenUpdating = True

Dim lastrow As Integer
Dim wsName As String
Dim cpName As String

wsName = "28May2020"
cpName = "COPYHERE"
Sheets(wsName).Activate

lastrow = Sheets(cpName).Cells(Rows.Count, 2).End(xlUp).Row

With Sheets(cpName)
    .Range("A" & lastrow + 1).Value = Date
    .Range("B" & lastrow + 1).Value = Time
End With

Range("L43:X93").Copy Worksheets(cpName).Range("A" & lastrow + 2)

Sheets(cpName).Activate

Application.ScreenUpdating = False

End Sub



【讨论】:

  • 感谢您的建议,但现在工作表工作正常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
  • 2013-08-16
  • 2019-12-06
  • 2017-09-03
相关资源
最近更新 更多