2つの異なるブックで作業しているため、2番目のワークシートにアクセスできません

カルロス・コエーリョ

ThisWorkbookと他のワークブックが一致するかどうかを比較するプログラムがあります。コードが他のワークブックの2番目のワークシートでテキストを見つける必要がある場合を除いて、すべて正常に実行されています。クラッシュするまで繰り返します。私が見つけようとしているテキストセルは両方のファイルに存在しますが、何らかの理由で私のコードはそれを識別できません(私はフォーマットを確認しました、両方ともテキストフォーマットです)

クラッシュは次の行で発生しますCase taxasWks.Cells(lin_dest, 4) = transf1Wks.Cells(lin_ori_2, 1)

エラーは次のとおりです。実行時エラー1004アプリケーション定義またはオブジェクト定義のエラー

    Dim consultaWbk As Excel.Workbook
    Dim linhas1Wks As Excel.Worksheet
    Dim linhas2Wks As Excel.Worksheet
    Dim transf1Wks As Excel.Worksheet
    Dim transf2Wks As Excel.Worksheet
    Dim taxasWks As Excel.Worksheet
    Dim lin_dest As Long
    Dim lin_ori_1 As Long
    Dim lin_ori_2 As Long




    Set consultaWbk = Workbooks.Open("C:\Users\Feels Bad Man\Dropbox\Tesingz\tesingz\Com paineis de transformador - versao 2.xlsm")

    Set linhas1Wks = consultaWbk.Worksheets("Taxas linhas")
    Set linhas2Wks = consultaWbk.Worksheets("Tempo médio de reposição linhas")
    Set transf1Wks = consultaWbk.Worksheets("Taxas Transformadores")
    Set transf2Wks = consultaWbk.Worksheets("Tempo médio de reposição transf")
    Set taxasWks = ThisWorkbook.Worksheets("taxas falha temp med rep")

     lin_dest = 2
     lin_ori_1 = 2
     lin_ori_2 = 2


    Do While taxasWks.Cells(lin_dest, 1) <> ""

            Select Case True

            Case taxasWks.Cells(lin_dest, 4).Value2 = linhas1Wks.Cells(lin_ori_1, 1).Value2:

                 taxasWks.Cells(lin_dest, 5).Value2 = linhas1Wks.Cells(lin_ori_1, 3).Value2
                 taxasWks.Cells(lin_dest, 6).Value2 = linhas1Wks.Cells(lin_ori_1, 4).Value2
                 taxasWks.Cells(lin_dest, 7).Value2 = linhas1Wks.Cells(lin_ori_1, 5).Value2
                 taxasWks.Cells(lin_dest, 8).Value2 = linhas1Wks.Cells(lin_ori_1, 6).Value2
                 taxasWks.Cells(lin_dest, 9).Value2 = linhas1Wks.Cells(lin_ori_1, 7).Value2
                 taxasWks.Cells(lin_dest, 10).Value2 = linhas2Wks.Cells(lin_ori_1, 2).Value2
                 taxasWks.Cells(lin_dest, 11).Value2 = linhas2Wks.Cells(lin_ori_1, 3).Value2
                 taxasWks.Cells(lin_dest, 12).Value2 = linhas2Wks.Cells(lin_ori_1, 4).Value2
                 taxasWks.Cells(lin_dest, 13).Value2 = linhas2Wks.Cells(lin_ori_1, 5).Value2
                 taxasWks.Cells(lin_dest, 14).Value2 = linhas2Wks.Cells(lin_ori_1, 6).Value2

                 lin_dest = lin_dest + 1
                 lin_ori_1 = 2


            Case Else:

                 lin_ori_1 = lin_ori_1 + 1

            End Select


                Select Case True

                Case taxasWks.Cells(lin_dest, 4).Value2 = transf1Wks.Cells(lin_ori_2, 1).Value2:

                 taxasWks.Cells(lin_dest, 5).Value2 = transf1Wks.Cells(lin_ori_2, 2).Value2
                 taxasWks.Cells(lin_dest, 6).Value2 = transf1Wks.Cells(lin_ori_2, 3).Value2
                 taxasWks.Cells(lin_dest, 7).Value2 = transf1Wks.Cells(lin_ori_2, 4).Value2
                 taxasWks.Cells(lin_dest, 8).Value2 = transf1Wks.Cells(lin_ori_2, 5).Value2
                 taxasWks.Cells(lin_dest, 9).Value2 = transf1Wks.Cells(lin_ori_2, 6).Value2
                 taxasWks.Cells(lin_dest, 10).Value2 = transf2Wks.Cells(lin_ori_2, 2).Value2
                 taxasWks.Cells(lin_dest, 11).Value2 = transf2Wks.Cells(lin_ori_2, 3).Value2
                 taxasWks.Cells(lin_dest, 12).Value2 = transf2Wks.Cells(lin_ori_2, 4).Value2
                 taxasWks.Cells(lin_dest, 13).Value2 = transf2Wks.Cells(lin_ori_2, 5).Value2
                 taxasWks.Cells(lin_dest, 14).Value2 = transf2Wks.Cells(lin_ori_2, 6).Value2


                 lin_dest = lin_dest + 1
                 lin_ori_2 = 2


                Case Else:

                    lin_ori_2 = lin_ori_2 + 1

                End Select


Loop


    Set linhas1Wks = Nothing
    Set linhas2Wks = Nothing
    Set transf1Wks = Nothing
    Set transf2Wks = Nothing
    consultaWbk.Close SaveChanges:=False


    Set consultaWbk = Nothing

    MsgBox "END"


End Sub
user4039065

空白が見つかるまでループし続けるこの種のDoWhileループは好きではありませんでした。一致するものが見つからない場合、lin_ori_1とlin_ori_2は、一致が見つかった場合に個別に2にリセットされるだけなので、ワークシートの行数を超えるまで繰り返します。

Dim fnd As Variant
With taxasWks
    For lin_dest = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
        fnd = Application.Match(.Cells(lin_dest, 4).Value2, linhas1Wks.Columns(1), 0)
        If Not IsError(fnd) Then
            'a match was found
            .Cells(lin_dest, 5) = linhas1Wks.Cells(fnd , 3).Value2
            .Cells(lin_dest, 6) = linhas1Wks.Cells(fnd , 4).Value2
            .Cells(lin_dest, 7) = linhas1Wks.Cells(fnd , 5).Value2
            .Cells(lin_dest, 8) = linhas1Wks.Cells(fnd , 6).Value2
            .Cells(lin_dest, 9) = linhas1Wks.Cells(fnd , 7).Value2
            .Cells(lin_dest, 10) = linhas2Wks.Cells(fnd , 2).Value2
            .Cells(lin_dest, 11) = linhas2Wks.Cells(fnd , 3).Value2
            .Cells(lin_dest, 12) = linhas2Wks.Cells(fnd , 4).Value2
            .Cells(lin_dest, 13) = linhas2Wks.Cells(fnd , 5).Value2
            .Cells(lin_dest, 14) = linhas2Wks.Cells(fnd , 6).Value2
        End If
        fnd = Application.Match(.Cells(lin_dest, 4).Value2, transf1Wks.Columns(1), 0)
        If Not IsError(fnd) Then
            'a match was found
            .Cells(lin_dest, 5) = transf1Wks.Cells(fnd , 2).Value2
            .Cells(lin_dest, 6) = transf1Wks.Cells(fnd , 3).Value2
            .Cells(lin_dest, 7) = transf1Wks.Cells(fnd , 4).Value2
            .Cells(lin_dest, 8) = transf1Wks.Cells(fnd , 5).Value2
            .Cells(lin_dest, 9) = transf1Wks.Cells(fnd , 6).Value2
            .Cells(lin_dest, 10) = transf2Wks.Cells(fnd , 2).Value2
            .Cells(lin_dest, 11) = transf2Wks.Cells(fnd , 3).Value2
            .Cells(lin_dest, 12) = transf2Wks.Cells(fnd , 4).Value2
            .Cells(lin_dest, 13) = transf2Wks.Cells(fnd , 5).Value2
            .Cells(lin_dest, 14) = transf2Wks.Cells(fnd , 6).Value2
        End If
    Next lin_dest
End With

.Value2プロパティに値を割り当てないでください。別のセルの.Value2をデフォルトの.Valueに割り当てます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

1つのフレームでArraylistにオブジェクトを追加しましたが、すでに開かれている2番目のフレームではオブジェクトにアクセスできません

分類Dev

2番目のネットワークアダプタに接続した後、インターネットにアクセスできません

分類Dev

「2つのオブジェクトは異なるObjectContextオブジェクトにアタッチされているため、2つのオブジェクト間の関係を定義できません。」-エラー

分類Dev

netExtenderを介して接続している場合、名前で作業ネットワークにアクセスすることはできません

分類Dev

netExtenderを介して接続している場合、名前で作業ネットワークにアクセスすることはできません

分類Dev

2つの異なるHashMapを使用しているときに、最初のキーセットを作成できますが、2番目のハッシュマップは作成できません

分類Dev

ループの下で私の2番目のコメントボックスを動作させることができませんでした

分類Dev

作成したブックのワークシートにアクセスできません

分類Dev

2番目のネットワークカードをアクティブ化するときにpingを実行できません

分類Dev

2つのオブジェクトは異なるObjectContextオブジェクトにアタッチされているため、2つのオブジェクト間の関係を定義できません。EntityFramework

分類Dev

複数のスパークセッションを使用して、2つの異なるHiveサーバーにアクセスできますか?

分類Dev

Python用のBigQueryAPIクライアントライブラリを使用しているときにネットワークにアクセスできません

分類Dev

2つのコントローラーで作業しているときに、すべてのリクエストで404を取得しました

分類Dev

エラー:別のスレッドが所有しているため、呼び出し元のスレッドはこのオブジェクトにアクセスできません。ストーリーボードシミュレーション

分類Dev

2つのワークシートの列を比較し、3番目のワークシートに欠落している値をリストします

分類Dev

マイCustomDeserializerクラスは、同じクラスの2番目のフィールドで使用されている二度目に動作しません。

分類Dev

2番目のハードドライブのSamba共有にアクセスできません...管理者に連絡してください

分類Dev

Python 3.0を使用して撮影した後、スクリーンショットを削除できません(別のプロセスで使用されているため、プロセスはファイルにアクセスできません)

分類Dev

Virtualbox-> VMのネットワークに2番目のアダプターを追加できません

分類Dev

2番目のテーブルがまだ作成されていないため、コンストラクターで多対多のテーブルを作成するとクラッシュします

分類Dev

VBA Excelは、2つの異なるワークシートから3番目のワークシートにデータをコピーします

分類Dev

php CIはphp構文であると想定しているため、オブジェクトのキーにアクセスできません

分類Dev

ネットワークWindowsXPマシンでホストされているvirtualbox上のubuntuサーバーゲストにアクセスできません

分類Dev

C ++では、他の2つの異なる共有オブジェクトが3番目の共有オブジェクトからシングルトンにアクセスできますか?

分類Dev

USBスティックは2つのドライブとして表示され、2番目のパーティションを削除できません

分類Dev

(2つの異なるネットワーク内の)2つのコンテナーを相互に通信させることができません

分類Dev

ソーシャルネットワーク用のDBMSを作成するためにLaravelを使用しています。アプリを作るのに必要です。誰か教えてもらえますか?私はグーグルで何も見つけることができません

分類Dev

同じネットワーク上の2番目のマシンからVagrantパブリックネットワークIPにsshを試行すると、アクセスが拒否されました

分類Dev

想定ロールを使用して、異なるアカウントに属する2つのdynamodbテーブルに同時にアクセスすることはできません

Related 関連記事

  1. 1

    1つのフレームでArraylistにオブジェクトを追加しましたが、すでに開かれている2番目のフレームではオブジェクトにアクセスできません

  2. 2

    2番目のネットワークアダプタに接続した後、インターネットにアクセスできません

  3. 3

    「2つのオブジェクトは異なるObjectContextオブジェクトにアタッチされているため、2つのオブジェクト間の関係を定義できません。」-エラー

  4. 4

    netExtenderを介して接続している場合、名前で作業ネットワークにアクセスすることはできません

  5. 5

    netExtenderを介して接続している場合、名前で作業ネットワークにアクセスすることはできません

  6. 6

    2つの異なるHashMapを使用しているときに、最初のキーセットを作成できますが、2番目のハッシュマップは作成できません

  7. 7

    ループの下で私の2番目のコメントボックスを動作させることができませんでした

  8. 8

    作成したブックのワークシートにアクセスできません

  9. 9

    2番目のネットワークカードをアクティブ化するときにpingを実行できません

  10. 10

    2つのオブジェクトは異なるObjectContextオブジェクトにアタッチされているため、2つのオブジェクト間の関係を定義できません。EntityFramework

  11. 11

    複数のスパークセッションを使用して、2つの異なるHiveサーバーにアクセスできますか?

  12. 12

    Python用のBigQueryAPIクライアントライブラリを使用しているときにネットワークにアクセスできません

  13. 13

    2つのコントローラーで作業しているときに、すべてのリクエストで404を取得しました

  14. 14

    エラー:別のスレッドが所有しているため、呼び出し元のスレッドはこのオブジェクトにアクセスできません。ストーリーボードシミュレーション

  15. 15

    2つのワークシートの列を比較し、3番目のワークシートに欠落している値をリストします

  16. 16

    マイCustomDeserializerクラスは、同じクラスの2番目のフィールドで使用されている二度目に動作しません。

  17. 17

    2番目のハードドライブのSamba共有にアクセスできません...管理者に連絡してください

  18. 18

    Python 3.0を使用して撮影した後、スクリーンショットを削除できません(別のプロセスで使用されているため、プロセスはファイルにアクセスできません)

  19. 19

    Virtualbox-> VMのネットワークに2番目のアダプターを追加できません

  20. 20

    2番目のテーブルがまだ作成されていないため、コンストラクターで多対多のテーブルを作成するとクラッシュします

  21. 21

    VBA Excelは、2つの異なるワークシートから3番目のワークシートにデータをコピーします

  22. 22

    php CIはphp構文であると想定しているため、オブジェクトのキーにアクセスできません

  23. 23

    ネットワークWindowsXPマシンでホストされているvirtualbox上のubuntuサーバーゲストにアクセスできません

  24. 24

    C ++では、他の2つの異なる共有オブジェクトが3番目の共有オブジェクトからシングルトンにアクセスできますか?

  25. 25

    USBスティックは2つのドライブとして表示され、2番目のパーティションを削除できません

  26. 26

    (2つの異なるネットワーク内の)2つのコンテナーを相互に通信させることができません

  27. 27

    ソーシャルネットワーク用のDBMSを作成するためにLaravelを使用しています。アプリを作るのに必要です。誰か教えてもらえますか?私はグーグルで何も見つけることができません

  28. 28

    同じネットワーク上の2番目のマシンからVagrantパブリックネットワークIPにsshを試行すると、アクセスが拒否されました

  29. 29

    想定ロールを使用して、異なるアカウントに属する2つのdynamodbテーブルに同時にアクセスすることはできません

ホットタグ

アーカイブ