私はこのほとんどの日に取り組んでおり、それを理解しているようには見えません。ここで(非常にシンプルでなければなりません)私がしようとしているものです:VBA - アプリケーション定義またはオブジェクト定義エラー?
二ワークブック:1が既に(はThisWorkbook)をオープンし、1つはApplication.FileDialog(msoFileDialogOpen)を介して開かれた(私たちは、このワークブック2と呼びます)
- このワークブックで列Kが空白の場合、 "Sheet1"は、ワークブック2の列Mと列Pの値を検索します。 "503 Sundry"、列BとGをそれぞれ検索します。
- 値がWorkbook2で一致する場合は、「503 Sundry」を選択して、列Hと列Iの値をコピーしてThisWorkbookの "Sheet1"、列Iと列Kにそれぞれ貼り付けます。
これは私がこれまで行ってきたことですが、以下の太字のコード行に "アプリケーション定義またはオブジェクト定義エラー"というエラーメッセージが表示され続けます。
Sub JPlan()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim cell1 As Range, rng1 As Range, cell2 As Range, rng2 As Range
Dim Cel As Range
Dim Sht1 As Worksheet
Dim SundrySht As Worksheet
Set wb1 = ThisWorkbook
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
If .Show Then
Filename = .SelectedItems(1)
Set wb2 = Workbooks.Open(Filename)
Else
Exit Sub
End If
End With
Set Sht1 = wb1.Sheets("Sheet1")
Set SundrySht = wb2.Sheets("503 Sundry")
Set Cel = Sht1.Range("P2")
Set rng1 = Range(Cel, Cel.Offset(Sht1.Cells.Rows.Count - Cel.Row, 0).End(xlUp))
Set Cel = SundrySht.Range("G2")
Set rng2 = Range(Cel, Cel.Offset(SundrySht.Cells.Rows.Count - Cel.Row, 0).End(xlUp))
If Sht1.Cells(i, 11) = "" Then 'if current cell in column 11 is empty then...
For Each cell2 In rng2 'for each cell in range 2 defined above (column G in "503 Sundry")...
For Each cell1 In rng1 'for each cell in range 1 defined above (column P in Sheet 1)...
If cell2.Value = cell1.Value And cell2.Offset(0, -5) = cell1.Offset(0, -3).Value Then 'if the value of cell2 equals the value of cell1 AND the value of cell2 (offset by 5 columns) equals the value of cell1 (offset by 3 columns) then...
cell1.Offset(0, -7).Value = cell2.Offset(0, 1).Value 'from to Sundry column H to Sheet1 column I
cell1.Offset(0, -5).Value = cell2.Offset(0, 2).Value 'from to Sundry column I to Sheet1 column K
Exit For
End If
Next
Next
End If
End Sub
コードビューは、構文の強調表示を行い、あなたが適用している可能性のあるボールドは失われます。あなたはエラーを指し示す他の方法を見つけることができますか? – teylyn
正確なエラーメッセージを含む[938その他の既存の投稿](http://stackoverflow.com/search?q=%5Bvba%5D+application+defined+or+object+defined+error)があります。彼らのうち何人があなたの質問に対する回答があるかどうかを確認してから、もう1つ質問を投稿してください。 –
は、if節の一部でwb2のみを設定するようです。あなたがそれを設定しないとどうなりますか?ほとんどの場合、1004エラーが発生する可能性があります。 –