0

私は2枚のシートを持っています.1枚目は2枚目からデータを取り出して後で印刷します.

最初のシートに 3 つのスクリプトがあります。印刷、編集、更新。

印刷は問題なく動作します。

編集は問題なく動作します。

更新は私の問題です。

フォームを更新すると、4 つのセルが踊り、シートを変更しなくてもデータが変更されます。

最初の 2 つは B17 と B20 です。

2 番目は Q23 と R25 です。

問題は、データのジャンプが 4 つのセルすべての間にあることです。セールス オーダーはパーツ リビジョンにジャンプし、パーツ ID はセールス オーダーにジャンプし、セールス オーダーは NCMR Qty にジャンプすることがあります。

なぜこれが起こっているのかわかりません。VBA コードはしっかりしているように見えますが、コンピューターでこれが起こっていることを確認できるだけでなく、なぜそれが起こっているのかを誰かが確認できますか?

シートは次のとおりです。

http://dl.dropbox.com/u/3327208/Excel/Edit%26Update.xlsm

問題の原因となっているコードは次のとおりです。

Option Explicit

    Sub PENCMR()
        Dim i As Integer

        'Internal NCMR
        Dim wsPE As Worksheet
        Dim wsNDA As Worksheet
        Dim c As Variant 'Copy Ranges
        Dim P As Range 'Paste Ranges

        Application.ScreenUpdating = False

        'Setting Sheet
        Set wsPE = Sheets("NCMR Output")
        Set P = wsPE.Range("A63:V63")

        Set wsNDA = Sheets("NCMR Data")

        c = Array("AG6", "B11", "B14", "B17", "B20", , "Q23", "B23", "Q11", "Q14", "Q17", "Q20", "Q26", "V23" _
            , "V25", "V27", "B32", "B40", "B46", "B52", "D58", "L58", "V58")

        For i = LBound(c) To UBound(c)
            P(i + 1).Value = wsPE.Range(c(i)).Value
        Next

        With wsNDA
            Dim NR As Long, LR As Long, LC As Long
            Dim f As Range

            LR = .Range("C" & Rows.Count).End(xlUp).Row
            LC = .Cells(2, Columns.Count).End(xlToLeft).Column
            NR = LR + 1

            Set f = .Range("A3:A" & LR).Find(what:=P.Cells(1).Text, LookIn:=xlValues, lookat:=xlWhole)
            If Not f Is Nothing Then
                f.Resize(1, P.Cells.Count).Value = P.Value
            Else
                MsgBox "The data can't be shown, please review the data in question, if no problem can be found please contact the developer"
            End If
        End With
        Range("A63:V63").ClearContents

        With wsPE
            .Range("B11").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,2,FALSE),"""")"
            .Range("B14").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,3,FALSE),"""")"
            .Range("B17").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,4,FALSE),"""")"
            .Range("B20").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,5,FALSE),"""")"
            .Range("B23").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,7,FALSE),"""")"
            .Range("Q11").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,8,FALSE),"""")"
            .Range("Q14").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,9,FALSE),"""")"
            .Range("Q17").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,10,FALSE),"""")"
            .Range("Q20").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,11,FALSE),"""")"
            .Range("Q23").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,6,FALSE),"""")"
            .Range("R26").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,12,FALSE),"""")"
            .Range("V23").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,13,FALSE),"""")"
            .Range("V25").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,14,FALSE),"""")"
            .Range("V27").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,15,FALSE),"""")"
            .Range("B32").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,16,FALSE),"""")"
            .Range("B40").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,17,FALSE),"""")"
            .Range("B46").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,18,FALSE),"""")"
            .Range("B52").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,19,FALSE),"""")"
            .Range("D58").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,20,FALSE),"""")"
            .Range("L58").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,21,FALSE),"""")"
            .Range("V58").Formula = "=IFERROR(VLOOKUP($AG$6,'NCMR Data'!$A$2:$Y$999999,22,FALSE),"""")"
        End With

        Application.ScreenUpdating = True

    End Sub

ここでエラーが発生します。

P(i + 1).Value = wsPE.Range(c(i)).Value
4

1 に答える 1

1

5番目の要素の配列Cに空白があるため、エラーが発生します。

"AG6", "B11", "B14", "B17", "B20", , "Q23",

それを取り除くとそれはうまくいくでしょう。私はそれを完璧に実行しました。

于 2012-05-14T13:42:25.547 に答える