2

次の VBA コードを使用して、あるシートの行を別のシートに自動的に移動しています。約 3 分の 1 の確率で、"実行時エラー '-2147417848 (80010108)" が発生し、Excel がクラッシュします。共通の理由が見つかりません。クラッシュの後、同じ行で同じコードを実行できますが、次回は正常に動作する場合とそうでない場合があります。

以下のこのコードが不安定である理由を誰か教えていただけますか?

Sub Move_to_Sheet2 ()
'
' Move_to_Sheet2 Macro
'
' Keyboard Shortcut: Ctrl+r
'
    Rows(ActiveCell.Row).Select
    Selection.Copy
    Set Rng = Nothing
    Sheets("Sheet2").Select
    Rows("4:4").Select
    Selection.Insert Shift:=xlDown
    Sheets("Sheet1").Select
    Selection.Delete Shift:=xlUp
    ActiveWorkbook.save
End Sub
4

2 に答える 2

2

行を完全に修飾する必要があります。この例を参照してください。

Sub Move_to_Sheet2()
    Dim ws As Worksheet

    '~~> Change this to the relevant sheet name
    Set ws = Sheets("Sheet1")

    With ws
        .Rows(ActiveCell.Row).Copy
        Sheets("Sheet2").Rows("4:4").Insert Shift:=xlDown
        .Rows(ActiveCell.Row).Delete
    End With
    ActiveWorkbook.Save
End Sub
于 2012-08-30T20:39:50.267 に答える
0
Sub Test()

' Test Macro

    Range("A24:C30").Select
    Selection.Copy
    ActiveWindow.ScrollRow = 4
    ActiveWindow.ScrollRow = 5
    ActiveWindow.ScrollRow = 6
    ActiveWindow.ScrollRow = 7
    ActiveWindow.ScrollRow = 9
    ActiveWindow.ScrollRow = 10
    Range("A31").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Copy

    Sheets("Save Sales").Select
    Range("B6").Select
    Selection.Insert Shift:=xlDown

    Sheets("Invoice").Select
    Application.CutCopyMode = False

    ActiveCell.FormulaR1C1 = ""
    Range("B9").Select
    MsgBox "Print Now"

End Sub
于 2016-06-30T19:05:42.217 に答える