2012-10-26 38 views
0

我目前正在嘗試編寫宏。如果語句訪問excel-vba中另一個工作簿中的數據

  • 我正在將宏寫入新的黑色工作簿(這是要求的一部分),並且我在其他工作簿中有很多數據。
  • 我需要使用宏來讀取不同的工作簿中的數據,並吐出每列遇到的錯誤,並將其寫入空白工作簿(即我在編程宏)。
  • 因此,對於每一列,假設有行號列表出現錯誤(而沒有其他)。我試圖寫一個If語句來做到這一點,我不斷收到一條錯誤消息,說明「預計或去」。

這是我到目前爲止有:

If [Dataset1.xls]Data1!R2C1=53 AND [Dataset1.xls]Data1!R2C1=453 AND [Dataset1.xls]Data1!R2C1=953 Then

的dataset1.xls是保存所有的數據和數據1是該板在所有的數據工作簿中的工作簿。我可能正在訪問單獨的工作簿完全錯誤。你們能幫忙嗎?非常感謝你提前。

這是大部分代碼:

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 
+0

您是否嘗試過首先訪問工作簿而不進行任何驗證?只是在那裏讀一些細胞 – BrOSs

+0

是的,我試過。我能夠成功地計算工作表中有數據的行數。 – John

+0

你能發佈那部分代碼嗎? – BrOSs

回答

0

你應該改變

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 

相反的:

If [Dataset1.xls]Data1!R2C1<>53 AND [Dataset1.xls]Data1!R2C1<>453 AND [Dataset1.xls]Data1!R2C1<>953 Then 

問候

- 全碼:

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 
+0

好吧,我犯了一個愚蠢的錯誤。該代碼完美無瑕。非常感謝你。你救了我很多麻煩。 – John

+0

我很高興能幫上忙。 – BrOSs

相關問題