1

質問: ユーザーが作業中のアクティブ シートに行を追加できるボタンを設定したいと考えています。バックグラウンドで、追加された場所と同じ場所にある同じワークブックの別のシートに、スプレッドシートで行を追加したいと考えています。(2 つのシートは、前月の情報を持つ非アクティブなワークシートとのみ同一です) これを行う必要があるのは、アクティブなワークシートが非アクティブなシートからデータを取得しており、同じ行数を保持したいからです。両方のシートにデータが同じ行にあるため、正しいデータが取得されます。

ユーザーが手動でコピーする必要がないように、選択行から数式をコピーすることも追加しました。それが問題の原因だと思います。

エラーをクリアする方法についてのアイデア:

実行時エラー '1004':
Range クラスの PasteSpecial メソッドが失敗しました

現在のワークシートと他の 3 つの行に行を挿入する方法を MS Excel VBAで使用したコードのアイデアを得ました。

私のコード

Sub AddRow()
'
' Row Macro


    ActiveWorkbook.Names.Add Name:="CopyRow", RefersToR1C1:=Rows(ActiveCell.Row)
    
    Range("CopyRow").Select
    
    Selection.Copy
    
    Dim Lst As Long

    Lst = ActiveCell.Row

    Worksheets("SOV Detailed Breakdown").Rows(Lst).Insert
    Worksheets("Previous Application").Rows(Lst).Insert
 
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False


    ActiveWorkbook.Names("CopyRow").Delete

End Sub
4

1 に答える 1

0

メソッドでエラーが発生しますがPasteSpecial、これは必要ありません。このようにクリップボードがいっぱいになると、次のInsertステートメントは自動的に貼り付け操作を行います。

Nameあなたが本当に必要とは思わない割り当てを取り除くために、私はそれを片付けます。

Sub AddRow() ' ' Row Macro
Dim Lst As Long

Rows(ActiveCell.Row).Copy

Lst = ActiveCell.Row

Worksheets("SOV Detailed Breakdown").Rows(Lst).Insert 
Worksheets("Previous Application").Rows(Lst).Insert

End Sub
于 2013-11-14T22:39:37.583 に答える