当我在VBA中使用range.offset时,我会得到错误代码1004应用程序定义的对象或由于synatrx错误导致的对



我正在尝试使用偏移量函数,但无法解决synatrx的问题。

我从这个网站上的另一个关于偏移的问题中复制了这个代码。

我想在X列中查找一个字符串(始终从X9开始(,如果存在,我想知道同一行中两列单元格的值。

我想在同一代码的附加部分中使用偏移量值,因此需要将其命名为变量,但我决定先看看是否可以让VBA至少读取我想要的信息,从而显示消息框。

这是代码:

Private Sub CommandButton3_Click()
Dim LeftStrike As Range
Dim FrameLeftStrike As Range
Dim lastRow As Long
lastRow = Range("X" & Rows.Count).End(xlUp).Row
Set LeftStrike = Range("X9:X" & lastRow)
Set FrameLeftStrike = Range("LeftStrike").Offset(0, 4).Value
For Each FrameLeftStrike In LeftStrike
If InStr(1, LeftStrike.Value, "Foot Strike") > 0 Then
MsgBox FrameLeftStrike
End If
Next FrameLeftStrike
End Sub

变量";FrameLeftStrike";就是问题所在。

我收到:

应用程序定义或对象定义错误。

我尝试了不同的迭代。

如果我将代码行更改为,

Set FrameLeftStrike = Sheet4.Range("LeftStrike").Offset(0, 4).Value

我也犯了同样的错误。

如果我把它改成

Set FrameLeftStrike = LeftStrike.Offset(0, 4).Value

我得到

运行时错误'424'需要对象。

我只想在活动工作表中使用此代码,但活动工作表的名称将更改,因为它将被复制为其他项目的模板。

  1. 循环通过X列(my_range(中的每个单元格(my_cell(
  2. 单独检查单元格是否包含Foot Strike
  3. 如果是,则返回值MsgBox中右侧的2个单元格

Sub test()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") '<-- Update
Dim my_range As Range, my_cell As Range
Dim lr As Long
lr = ws.Range("X" & ws.Rows.Count).End(xlUp).Row
Set my_range = ws.Range("X9:X" & lr)
For Each my_cell In my_range
If InStr(my_cell, "Foot Strike") Then
MsgBox my_cell.Offset(0, 2)
End If
Next my_cell

End Sub

相关内容

最新更新