If语句访问excel vba中其他工作簿中的数据

If语句访问excel vba中其他工作簿中的数据,vba,excel,Vba,Excel,我目前正试图编写一个宏 我正在一个新的黑色工作簿中编写宏(这是要求的一部分),我在另一个工作簿中有很多数据 我需要使用宏读取不同工作簿中的数据并吐出每个列所遇到的错误,并将其写入空白工作簿(即我正在编程宏)。李> 因此,假设每列都有一个行号列表,但遇到了一个错误(除此之外什么都没有)。我正试图写一个If语句来实现这一点,但我一直收到一条错误消息,上面写着“expected then或go to” 这就是我到目前为止所做的: If[Dataset1.xls]Data1!R2C1=53和[Dat

我目前正试图编写一个宏

  • 我正在一个新的黑色工作簿中编写宏(这是要求的一部分),我在另一个工作簿中有很多数据
  • 我需要使用宏读取不同工作簿中的数据并吐出每个列所遇到的错误,并将其写入空白工作簿(即我正在编程宏)。李>
  • 因此,假设每列都有一个行号列表,但遇到了一个错误(除此之外什么都没有)。我正试图写一个If语句来实现这一点,但我一直收到一条错误消息,上面写着“expected then或go to”
这就是我到目前为止所做的:

If[Dataset1.xls]Data1!R2C1=53和[Dataset1.xls]Data1!R2C1=453和[Dataset1.xls]Data1!R2C1=953然后

dataset1.xls是保存所有数据的工作簿,Data1是该工作簿中包含所有数据的工作表。我可能完全错误地访问了单独的工作簿。你们能帮忙吗。事先非常感谢

这是大部分代码:

Dim numrow As Long
Dim count As Long
count = 2

With Workbooks("Dataset1.xls").Sheets("Data1")
numrow = .Range("A1", .Range("A1").End(xlDown)).Rows.count

End With
Do Until count = numrow
If [Dataset1.xls]Data1!R2C1<>53 AND [Dataset1.xls]Data1!R2C1<>453 AND [Dataset1.xls]Data1!R2C1<>953 Then  

End If
count = count + 1
Loop
Dim numrow尽可能长
不算长
计数=2
工作手册(“Dataset1.xls”).工作表(“Data1”)
numrow=.Range(“A1”),.Range(“A1”).End(xlDown)).Rows.count
以
直到计数=numrow
如果[Dataset1.xls]Data1!R2C153和[Dataset1.xls]Data1!R2C1453和[Dataset1.xls]Data1!然后是R2C1953
如果结束
计数=计数+1
环
您应该更改

If Workbooks("Dataset1.xls").Sheets("Data1").Cells(2, 1).Value <> 53 AND Workbooks("Dataset1.xls").Sheets("Data1").Cells(2, 1).Value <> 453 AND Workbooks("Dataset1.xls").Sheets("Data1").Cells(2, 1).Value <> 953 Then
如果工作簿(“Dataset1.xls”).Sheets(“Data1”).Cells(2,1).值53和工作簿(“Dataset1.xls”).Sheets(“Data1”).Cells(2,1).值453和工作簿(“Dataset1.xls”).Sheets(“Data1”).Cells(2,1).值953,则
而不是:

If [Dataset1.xls]Data1!R2C1<>53 AND [Dataset1.xls]Data1!R2C1<>453 AND [Dataset1.xls]Data1!R2C1<>953 Then
If[Dataset1.xls]Data1!R2C153和[Dataset1.xls]Data1!R2C1453和[Dataset1.xls]Data1!然后是R2C1953
问候

--完整代码:

range = Workbooks("Dataset1.xls").Worksheets("Data").Range("A65536").End(xlUp).Row

For i = 2 To range

If Workbooks("Dataset1.xls").Sheets("Data1").Cells(i, 1).Value <> 53 AND Workbooks("Dataset1.xls").Sheets("Data1").Cells(i, 1).Value <> 453 AND Workbooks("Dataset1.xls").Sheets("Data1").Cells(i, 1).Value <> 953 Then

End IF

Next i
range=工作簿(“Dataset1.xls”)。工作表(“Data”)。范围(“A65536”)。结束(xlUp)。行
对于i=2到范围
如果工作簿(“Dataset1.xls”).表(“Data1”).单元格(i,1).值53和工作簿(“Dataset1.xls”).表(“Data1”).单元格(i,1).值453和工作簿(“Dataset1.xls”).表(“Data1”).单元格(i,1).值953,则
如果结束
接下来我

您是否已尝试在没有任何验证的情况下首先访问工作簿?看看里面的手机吧是的,我试过了。我能够成功地计算工作表中包含数据的行数。您能发布这部分代码吗?当然,让我编辑上面的文章,如果您的代码没有意义,请将整个代码放在上面。您正在检查同一单元格是否同时等于三个不同的值。此外,它会忽略正在递增的count变量。你应该做一些类似于
工作簿(“Dataset1.xls”).Sheets(“Data1”).Cells(count,1)
好吧,我犯了一个愚蠢的错误。该代码是完美的。非常感谢你。你给我省了这么多麻烦。