【问题标题】:VBA for excel gives either "object variable not set" or "object required"VBA for excel 给出“未设置对象变量”或“需要对象”
【发布时间】:2018-01-08 19:52:07
【问题描述】:

我一直在尝试在表中搜索预定值,​​如果该值不存在,请添加该值,然后在表中创建一个新行。

我知道听起来很简单。

tblrow = tbllook.Range.Columns(1).Cells.Find(shtfind, searchorder:=xlByRows, searchdirection:=xlPrevious).Row 

MsgBox tblrow 

If tblrow Is Nothing Then 
    tblcount = tbllook.Range.Rows.Count 
    tbllook.Range(tblcount, 1).Select 
    ActiveCell = shtfind 
    tbllook.ListRows.Add 
End If

Tblerow 目前作为变体变暗。

当我在表中找到它时,我在 msgbox 中得到了正确的答案,但随后在 If 语句中吐出“需要对象”错误。

但是当在表中找不到该值时,它仍然会吐出相同的错误。

我尝试将 tblrow 的 Dim 更改为 Object,然后在我的 .find 行上得到一个“对象变量或未设置块变量”,即使我将 set 放在它前面。

我对问题的谷歌搜索告诉我,这是因为它没有在表中找到值,并且我添加的 If 语句应该对它进行排序,但它没有。

请帮忙。

【问题讨论】:

  • 请发布实际代码而不是图片
  • tblrow = tbllook.Range.Columns(1).Cells.Find(shtfind, searchorder:=xlByRows, searchdirection:=xlPrevious).Row MsgBox tblrow If tblrow is nothing then tblcount = tbllook.Range. Rows.Count tbllook.Range(tblcount, 1).Select ActiveCell = shtfind tbllook.ListRows.Add End If
  • 我显然没有掌握这个论坛的格式的窍门..但这就是代码
  • 请不要在 cmets 中发布相关信息,编辑您的问题并在此处添加信息。

标签: vba excel


【解决方案1】:

尝试检查“找到”的值是否为空:

Sub TestMe()    
    If tbllook.Columns(1).Cells.Find("test") Is Nothing Then
        MsgBox "It is Nothing?"
    End If    
End Sub

然后它会工作。此外,tbllook.Range 会在您使用它时出现错误。

恭喜您将代码添加到您的问题中。下一步,尝试按照 cmets 中的建议复制和粘贴代码。 How do I format my code blocks?这样你会得到更多的关注。

【讨论】:

  • 您好,感谢您的帮助。但这只是返回“对象不支持此属性或方法”错误
  • @AmatureMarco - 您是仅尝试了我的代码还是尝试将其嵌入到您的代码中?我写的 5 行应该可以正常工作。
  • 我认为它可以工作并直接将其实现到我自己的代码中,这就是我收到错误的时候。
  • 我发现使用这种方法只适用于代码中的 .range ,如果我不这样做会吐出错误。不过多亏了你,我才能让它正常工作。
猜你喜欢
  • 2014-05-09
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多