我已经编写了下面的代码,但我似乎无法检测到它有什么问题。该程序被设置为从数据传输工作簿:VBA代码有时会返回错误,有时候不会
SRJem.xlsx
到下面的代码被写入活动工作簿。现在,我同时打开两个工作簿(并且我不想在执行操作时关闭它们)。问题是,代码在某些时候是成功的,而它在某些时候会返回第15行中的错误。我在手术前试过挽救,但仍然发生。
线15:
ws.Cells(iRow,4)。价值= wbSource.Sheets( “1”)的细胞(14,1)。价值
我需要一些关于我有错误的光解释。非常感谢。
Sub transfer_to_masterfile()
'find first empty row in database
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("1")
Dim wbSource As Workbook
iRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).row + 1
Set wbSource = Workbooks.Open("C:\Users\fed.staff01\Desktop\J.G.E - QS\6. EXCEL PROGRAMS\SRJem.xlsx") ' <<< path to source workbook
'Now, transfer values from wbSource to wbTarget:
ws.Cells(iRow, 4).Value = wbSource.Sheets("1").Cells(14, 1).Value
ws.Cells(iRow, 5).Value = wbSource.Sheets("1").Cells(6, 4).Value
Dim mats As String
Dim row As Integer
row = 23
Do
mats = mats & " " & wbSource.Sheets("1").Cells(row, 1).Value & " " & wbSource.Sheets("1").Cells(row, 3).Value & _
" " & wbSource.Sheets("1").Cells(row, 5).Value
If wbSource.Sheets("1").Cells(row + 1, 1).Value > 0 Then
mats = mats & vbNewLine
End If
If wbSource.Sheets("1").Cells(row + 1, 1).Value = "" Then
Exit Do
End If
row = row + 1
Loop Until row = 42
ws.Cells(iRow, 7).Value = mats
'ws.Cells(iRow, 5).Value = wbSource.Sheets("1").Cells(6, 4).Value
'wbSource.Close
'wbTarget.Close
End Sub
您的工作表被命名为“”1“'?或者你正在试图提到第一个'1'? – PatricK
@PatricK,我指的是我的工作表名称是“1”。 –
要将问题标记为已回答,只需点击对您有帮助的答案左侧的“打勾”即可。 [帮助文件。](https://stackoverflow.com/help/accepted-answer) –