0

今日、この VBA プログラムで問題が発生しました。数日間はうまく機能していましたが、今では悪臭を放っています。単純なコピーと貼り付けでセル値を配列の値に設定するだけなので、この問題を引き起こすことがわかっているものは何も変更していません。私はそれをいじって答えを探しましたが、それを修正するものは何も得られないようです。

Worksheets(1).Select
For i = 1 To N
    Worksheets(1).Cells(3 + i, 1).Value = Current(i)
Next i

For h = 1 To holidays
    Worksheets(h).Select
    Range(Worksheets(h).Cells(4, 6), Worksheets(h).Cells(4 + N, 100)).Select
    Selection.Copy
    Worksheets("Sort Sheet").Select
    Cells(1, 1).Select
    Selection.PasteSpecial
    For f = 1 To N
        For i = 1 To N
        If Position(i) = f Then

            Range(Worksheets("Sort Sheet").Cells(f, 1), Worksheets("Sort Sheet").Cells(f, 100)).Select
            Selection.Copy
            Worksheets(h).Select
            ActiveSheet.Cells(i + 3, 6).Select
            ActiveSheet.PasteSpecial
            Application.CutCopyMode = False

        End If
        Next i
    Next f
Next h
End Sub

バグがある最初の行は ActiveSheet.PasteSpecial です。行全体と定義された範囲を貼り付けて、通常の貼り付けと貼り付けを試みました。しかし、それを機能させるものは何もないようです。

バグがある 2 行目は Worksheets(1).Cells(3 + i, 1).Value = Current(i) です。これは今日まで機能していたので、停止した理由がわかりません current(i) 「TONY BUGGENS」などの名前の 1D 配列値です。

プログラム全体が並べ替えプログラムであるため、配列内の名前を並べ替えてから、スプレッドシートの元の名前に貼り付けます。

皆さんの助けに感謝します。おそらく、私が見落としている単純なものがあると確信しています。早朝になりました。

乾杯、エイミー

4

2 に答える 2

0

Activesheet は使用せず、次のスタイルでシートに名前を付けます。

Thisworkbook.Sheets("Sheetname")

Activesheet は最終的にバグにつながる可能性があります。
また、コピーして貼り付ける代わりに、次のスタイルで値を割り当てます。

Thisworkbook.Sheet("Destination").range("A1:B2").Value = Thisworkbook.Sheet("Source").range("A1:B2").Value

ソース範囲と宛先範囲が常に同じサイズであることを確認してください。
もちろん、セルをそのまま使用しても問題ありません。

2 番目のバグについては、ローカル変数を表示する VBA の「ローカル ウィンドウ」を使用するのが最善の方法です。あなたのコードは配列に何が埋められているかを示していませんが、[ローカル] ウィンドウで確認できます。以下も使用できます。

debug.print current(i) 

配列に何が含まれているかを確認します。配列に代入できない値またはオブジェクトが含まれている場合は、配列に何が代入されているかを確認する必要があります

current(i) = <???> 

問題が解決したかどうか教えてください。

于 2013-04-02T08:39:24.613 に答える
0

問題は、シート内で何かが変更されるたびに実行されるマクロがシートに組み込まれていることでした。これは、クリップボードをクリアして何も貼り付けようとしていないと思われるプログラム中に発生しました。

2 つ目の問題は、プログラム自体の自動保護が原因でした。

スプレッドシート全体が混乱しているのは、プログラマーが明らかに良い仕事をしていないためです。私はそれを整理する短いストローを描きました。

助けてくれてありがとう、すぐにまた必要になるかもしれません。

于 2013-04-02T09:23:52.350 に答える