【问题标题】:VBA 1004 error pulling data from other sheet从其他工作表中提取数据的 VBA 1004 错误
【发布时间】:2016-08-17 08:05:24
【问题描述】:

我遇到了一个奇怪的对象/用户定义的 1004 错误。也许我只是忽略了一些东西。

我希望实现一个与我在另一张工作表上使用过的代码非常相似的代码。工作表本质上是一个仪表板,用户使用的唯一单元格是活动表中的“b1”,因为这允许用户从下拉菜单中进行选择。更改后,信息应参考 ClientDB 表以找到正确的行,然后从中提取信息。

我之前使用过非常相似的代码,没有遇到任何问题。只是想知道是否有一些我可能忽略的东西?

这是我的代码:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim DBWS As Worksheet, cws As Worksheet, sws As Worksheet
Dim aa As Integer, bb As Integer, cc As Integer, dd As Integer

Set DBWS = ActiveWorkbook.Sheets("ClientDB")
Set cws = ActiveWorkbook.Sheets("ClientBoard")

aa = DBWS.Columns("a").Find(what:=cws.Range("b1").Value, after:=DBWS.Range("a1")).Row
bb = Range("a" & aa).Row


'contact
Range("b3").Value = DBWS.Cells(bb, "H").Value
'number
Range("b4").Value = DBWS.Cells(bb, "I").Value
'email

Range("b5").Value = DBWS.Cells(bb, "J").Value

'等等..等等..等等..

额外说明:如果我运行错误处理程序来绕过 1004 错误,它最终会在几个错误处理程序周期后填充

任何帮助将不胜感激!

谢谢!

【问题讨论】:

  • 我建议修改为 Dim As Long, bb As Long 只是为了确定,不一定要解决这个问题
  • 我在线上遇到错误:aa = DBWS.Columns("a").Find(what:=cws.Range("b1").Value, after:=DBWS.Range ("a1")).行

标签: vba excel macros


【解决方案1】:

考虑将DBWS.Columns("a")... 更改为DBWS.Columns("a:a")...

a不是一个有效的参考。

【讨论】:

    【解决方案2】:

    正如@SickDimesion 所说,您必须将Columns("a") 更改为DBWS.Columns("a:a")DBWS.Columns(1)

    进行该更改后,您可能仍然会收到错误,因为您直接尝试获取该行。如果.Find 没有返回匹配项怎么办?

    考虑把你的代码改成这个

    Dim aCell as Range
    
    set aCell = DBWS.Columns(1).Find(what:=cws.Range("b1").Value, _
                                     after:=DBWS.Range("a1"))
    
    If Not aCell Is Nothing Then
        aa = aCell.Row
    Else
        Msgbox "Value Not Found"
        Exit Sub
    End If
    

    【讨论】:

      【解决方案3】:

      你没有限定上下文

      bb = Range("a" & aa).Row
      

      Excel 不知道此 Range 指的是哪个工作表。其他不合格的 Range 语句也是如此。

      【讨论】:

      • 也许我今天很累,但是使用bb = Range("a" & aa).Row 有什么意义呢?如果aa = DBWS.Columns("a").Find(what:=cws.Range("b1").Value, after:=DBWS.Range("a1")).Row 返回一个行号,然后他将其放入一个范围内以获取行号,在这种情况下不是bb = aa 吗?
      • 我的代码很可能草率。根据您提出的更改 Teylyn,我有以下内容:“自动化错误 - 调用的对象已与其客户断开连接”
      猜你喜欢
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多