1
我對VBA很陌生,在Java和C++之前很生疏,所以對此有所幫助。在總覽中,我試圖讓該程序找到一個數字,並將該月解釋爲外部工作簿中的工作表編號,然後根據第一個數字返回一個值。我有這樣做,但我不能讓循環結束在第一個空單元格。這可能是lookFor
中的範圍或循環語句的問題;我不確定。有什麼想法嗎?下面是代碼獲得一個循環以停止VBA中的打印
Sub Go()
Range("B6").Select
Do Until IsEmpty(ActiveCell)
Dim lookFor As Range
Dim srchRange As Range
Dim book1 As Workbook
Dim book2 As Workbook
Dim book2Name As String
book2Name = "Cash_Office_Long_Short_Log_FYE18.xlsx"
Dim book2NamePath As String
book2NamePath = ThisWorkbook.Path & "\" & book2Name
Dim refMonth As Integer
refMonth = Month(Cells(6, 5)) + 1
Debug.Print "refMonth="; refMonth
Set book1 = ThisWorkbook
If IsOpen(book2Name) = False Then Workbooks.Open (book2NamePath)
Set book2 = Workbooks(book2Name)
Set lookFor = book1.Sheets(1).Range("B6:B800")
Set srchRange = book2.Sheets(refMonth).Range("A1:B800")
lookFor.Offset(0, -1).Value = Application.VLookup(lookFor, srchRange, 2, False)
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Function IsOpen(strWkbNm As String) As Boolean
On Error Resume Next
Dim wBook As Workbook
Set wBook = Workbooks(strWkbNm)
If wBook Is Nothing Then
IsOpen = False
Set wBook = Nothing
On Error GoTo 0
Else
IsOpen = True
Set wBook = Nothing
On Error GoTo 0
End If
End Function
您的問題引起.xlsx'。但是,在嘗試執行帶有795個單元格範圍內的搜索項的VLookup時,您也遇到了問題 - 這會導致類型不匹配錯誤。你實際上只是試圖在原始頁面的B6,B7,B8等中搜索單元格嗎? – YowE3K
活動可能會在該表中,但在運行它的測試實例中總是在book1或Thisworkbook中。我只是在book2中的book1中搜索B列中單元格的值。 – Rsheale
所以你的代碼永遠不會打開第二個工作簿?開始時它總是打開的? – YowE3K