第1ワークブックの値と第2ワークブックのデータのカラムを一致させ、第1ワークブックの特定のセルをコピーして貼り付けます。 2番目のワークブックに特定のセル(一致データと同じ行)を追加します。ここで第1ワークブックの値と第2ワークブックのカラムを一致させ、特定のセルをコピー
は、私がこれまでに作ってみたが、それは動作しないコードがあり、実行時エラー1004を返します:アプリケーション定義またはオブジェクト定義のエラーを。
Dim FindNo As String
Dim X As Long, LastRow As Long
Dim FoundCell As Range
Dim FColumn As Integer, FRow As Integer
Dim WB1 As Workbook, SHT1 As Worksheet
Dim WB2 As Workbook, SHT2 As Worksheet
Application.ScreenUpdating = False
Set WB1 = ThisWorkbook
Set WB2 = Workbooks.Open("Z:\ISO MTSO DOCUMENTS (New Templates)\Incident & Accident Monitoring (2016 and 2017)\Incident Monitoring 2016 and 2017.xlsx")
Set SHT1 = WB1.Sheets("F-IMS-11")
Set SHT2 = WB2.Sheets("2017")
FindNo = SHT1.Range("Q1").Value
LastRow = SHT2.Range("C" & Rows.Count).End(xlUp).Row
For X = 3 To LastRow
If SHT2.Cells(X, "C") = FindNo Then
FRow = FoundCell.Row
FColumn = FoundCell.Column
SHT2.Range(Cells(FColumn + 14, FRow)) = SHT1.Cells(13, 1)
SHT2.Range(Cells(FColumn + 15, FRow)) = SHT1.Cells(7, 6)
SHT2.Range(Cells(FColumn + 17, FRow)) = SHT1.Cells(46, 2)
SHT2.Range(Cells(FColumn + 18, FRow)) = SHT1.Cells(58, 2)
SHT2.Range(Cells(FColumn + 19, FRow)) = SHT1.Cells(58, 13)
End If
Application.CutCopyMode = False
Next X
SHT2.Columns(17).WrapText = True
SHT2.Columns(20).WrapText = True
SHT2.Columns(21).WrapText = True
WB2.Save
WB2.Close
Application.ScreenUpdating = True
それは私が本当にVBAで良い背景を持っていない、と私はコードのほとんどを変更しようとしたとして、提案を聞くのは素晴らしいだろう。
を検討することができるもの上記のすべてのために
を変更しないときは、ループ内の同じオブジェクトへのアクセスを繰り返すことは避けるべきでエラーを行います発生する?おそらく役立つことの1つは、実行したいシートで範囲のすべての用途を完全に修飾する必要があることです。あなたが 'SHT1.Range(" Q1 ")...'をどのようにしたかを見てください。また、定義された範囲*、つまり 'SHT2.Range(SHT2.Cells(....)'であっても、 'Cells()'と 'Rows.Count' *でそれを行う必要があります。そうでなければ、 – BruceWayne