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
あなたの問題はCash_Office_Long_Short_Log_FYE18 'でアクティブシートに潜在的にある' ActiveCell'を、使用によって引き起こされます.xlsx'。しかし、検索項目が795セルの範囲である「VLookup」を実行しようとすると、タイプミスマッチエラーが発生するという問題もあります。実際には、元のシートのB6、B7、B8などのセルを検索しようとしていますか? – YowE3K
アクティブシートは潜在的にそのシートに存在する可能性がありますが、実行したテストインスタンスでは常にbook1またはThisWorkbookにあります。私はbook2のbook1からB列のセルの値を探しています。 – Rsheale
コードで2番目のワークブックを開くことはありませんか?あなたが始めるときはいつも開いていますか? – YowE3K