0

いくつかのソースデータを取得してそれをいくつかのシートに書き込むマクロを作成しました。マクロの実行の前後に非表示のままにするのが好きです。マクロを作成した後、実行すると、各シートのいくつかのレコードのみが更新されます(たとえば、最初の非表示のシートでは、1000を超える行のうち21行が更新されます。これが発生する理由は何ですか?確かにすべてを更新する必要があります。それらのどれも?私もエラーを取得していません。私は試しました

Application.ScreenUpdating = False
Worksheets("FT Raw").Visible = True
Worksheets("L1").Visible = True
Worksheets("L2").Visible = True
Worksheets("L3").Visible = True
Worksheets("L4").Visible = True

ただし、更新されるのは21行のみです。

更新:これは、各シートで実行されているコードです

endval = Cells(Rows.Count, 1).End(xlUp).Row

For i = 1 To endval
    If Not Sheets("FT Raw").Cells(i, "A") = "" Then
        splitted = Split(Sheets("FT Raw").Cells(i, "A"), ",")
        Sheets("FT Raw").Cells(i, "B") = splitted(0)
        Sheets("FT Raw").Cells(i, "C") = splitted(1)
        Sheets("FT Raw").Cells(i, "D") = splitted(2)
        If Sheets("FT Raw").Cells(i, "D") = "1" Then
            Sheets("L1").Cells(j, "A") = Trim(splitted(0))
            Sheets("L1").Cells(j, "B") = Trim(splitted(3))
            j = j + 1
        End If
    End If
Next i
4

2 に答える 2

1

OK編集。endval calcでSheet( "FT Raw")を指定する必要があります。

このセットを試してendval = Sheets("FT Raw").Cells(Sheets("FT Raw").Rows.Count, 1).End(xlUp).Row、コードの残りの部分に進んでください。

(列の上部に空白のセルがない場合にendval = Sheets("FT Raw").UsedRange.Rows.Count のみ使用することもできます)

最後に幸運なことに、コードを実行するためにこれらのシートを再表示する必要はまったくありません。必ずデバッグするためにそうしてください、しかし怒りで走っているとき、それは必要ではありません。

于 2013-01-22T11:39:47.093 に答える
0

これは、シートの非表示とは関係ありません。シートが非表示になっている場合でも、VBAを使用して変更できます。(保護されている場合のみ、保護を解除する必要があります。)

あなたのコードを見てください、私にはわかりません、どこjが初期化されていますか-そしてどのような状況であなたのシートの列DFT rawはに等しい"1"です。

たとえば、を使用して行を追加する場合は、上部のjを初期化することをお勧めします。

j = Sheets( "L1")。Range(Rows.Count、1).End。(xlUp).Row + 1

次に、マクロを実行した後(チェック用)、生のシートの列Dを値のオートフィルターでフィルター処理し、それ1がシートのエントリ数と一致するかどうかを確認しますL1

于 2013-01-22T11:38:42.103 に答える