【问题标题】:Using a named integer in a range [duplicate]在范围内使用命名整数[重复]
【发布时间】:2022-11-14 07:14:09
【问题描述】:

我使用下面的代码从指定的单元格中找到相应的日期,它给了我一个行号作为整数。我遇到的问题是我想在使用行号两次来确定范围的起始单元格和结束单元格的范围内使用它。我收到'运行时错误'1004' - 对象'_Worksheet'的'方法'范围'失败。

我怎样才能使用这个命名整数两次来获得我需要的东西?我的最后一行代码出现错误。


Set MacroPage = Workbooks("Monthly Inventory Report 2.xlsm").Worksheets("Macro Page")
Set BHLSTracker = Workbooks("Monthly Inventory Report 2.xlsm").Worksheets("Blackhole & Lost Stock Tracker")

Dim DataDate As String: DataDate = MacroPage.Range("D4").Value
Dim TargetDate As Range, TargetRow As Integer
    Set TargetDate = BHLSTracker.Columns("A").Find(What:=CDate(DataDate), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows)
    If Not TargetDate Is Nothing Then TargetRow = TargetDate.Row
    
BHLSTracker.Range("E1:F1").Copy
BHLSTracker.Range(Cells(TargetRow, 5), Cells(TargetRow, 6)).PasteSpecial xlPasteFormulas

【问题讨论】:

  • 您需要限定Cells(TargetRow...,否则VBA 将使用Activesheet 的单元格,如果BHLSTracker-Sheet 不是活动表,这将失败。 BHLSTracker.Range(BHLSTracker.Cells(TargetRow, 5), BHLSTracker.Cells(TargetRow, 6)).PasteSpecial
  • 除了上述之外,您正在测试find,但无论targetrow 是否被分配,您都继续前进,这会导致问题。
  • 感谢您的快速回复。这样可行。

标签: excel vba


【解决方案1】:

当您使用 VBA 代码选择不在活动工作表中的区域时,VBA 将向您显示运行时错误 1004。因为,如果您要为特定工作表选择一个单元格或单元格区域,则需要处于活动状态在那时候。如果 sheet2 现在处于活动状态,则无法从 sheet1 中选择单元格。

【讨论】:

  • 当然可以,你只需要符合条件。
猜你喜欢
  • 2017-05-22
  • 2019-10-03
  • 2011-03-31
  • 1970-01-01
  • 2014-02-17
  • 2016-12-15
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多