【问题标题】:VBA Trouble with finding row numberVBA 查找行号的问题
【发布时间】:2019-12-09 08:35:53
【问题描述】:

无论出于何种原因,以下内容都不适合我。 给我们带来了超出范围的下标 我所追求的是vba从工作表“日志”的A行中的textbox2中找到值并返回行号然后向右计数8并将第8列中该行的单元格的值设置为textbox1值..

值肯定在 A 列中,但似乎找不到。

Private Sub CommandButton1_Click()
Dim answer As Integer
Dim lrow As String

answer = MsgBox("Do you wish to amend this absence?", vbYesNo, "Proceed?")
If answer = vbYes Then
lrow = Sheets("Log").Range("A:A").Find(What:=UserForm3.TextBox2.Value, LookIn:=x1Values)
Sheets("Log").Range(lrow, 8).Value = UserForm3.TextBox1.Value



Else
End If
End Sub

感谢您的帮助

【问题讨论】:

  • UserForm3.TextBox2.Value的值是多少?
  • 什么是x1Values?你的意思是xlValues
  • 如果您使用Option Explicit,这些错误会立即出现并帮助您进行调试。

标签: excel vba find row


【解决方案1】:

几个错误:

  • 您想要返回返回的范围对象所在的行,因此代码如下所示:

    lrow = Sheets("Log").Range("A:A").Find(What:=UserForm3.TextBox2.Value, LookIn:=xlValues).Row
    
  • 由于lrow 是我们要使用的数字Dim lrow as Long

  • 现在我们可以在另一个单元格引用中使用它:

    Sheets("Log").Cells(lrow, 8).Value = UserForm3.TextBox1.Value
    

您是否注意到使用x1Values 而不是xlValues 也犯了一个小错误> L 而不是1!你也看到我是怎么把.Range(lrow, 8)改成.Cells(lrow, 8)的吗?


添加,如果您正在寻找完全匹配,您可能还需要考虑使用LookAt:=xlWhole

【讨论】:

  • 这太好了,谢谢!我已经通过反复试验将单元格更改为范围,以查看它是否可以工作并且忘记将其更改回来。 x1 vs xl(我不知道我在想什么哈!)
猜你喜欢
  • 1970-01-01
  • 2013-07-27
  • 2014-04-06
  • 1970-01-01
  • 2019-05-19
  • 1970-01-01
  • 2013-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多