Я довольно новичок в 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
Ваш проблема вызвана использованием 'ActiveCell', которое потенциально в активном листе в' Cash_Office_Long_Short_Log_FYE18 .xlsx'. Но у вас также есть проблемы с попыткой сделать «VLookup», при этом элемент поиска представляет собой диапазон из 795 ячеек, что дает ошибку несоответствия типа. Вы на самом деле просто пытаетесь найти ячейку в своих исходных листах B6, B7, B8 и т. Д.? – YowE3K
Активен потенциально может быть на этом листе, но в тестовых экземплярах, которые я запускал, он всегда находится в book1 или Thisworkbook. Я просто ищу значение ячеек в столбце B из book1 в book2. – Rsheale
Значит, ваш код никогда не открывает вторую книгу? Он всегда открыт, когда вы начинаете? – YowE3K