2017-07-07 9 views
0

3枚と1枚のマスターシートがあります。 マスターのセルデータを残りのシートにコピーしたい。それは、常に実行時エラー1004」thrw誰でも助けることができる?VBAアクティブセルのすべてのデータをアクティブなシートにコピーするエラー

Private Sub Worksheet_Change(ByVal Target As Range) Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Master") Dim columnName As String columnName = Split(ActiveCell.Address, "$")(1) Sheets.FillAcrossSheets ws.Range(columnName & ActiveCell.Row), xlFillWithAll End Sub enter image description here

+0

達成しようとしていること特に、なぜターゲットの代わりに「ActiveCell」を使用するのですか?また、編集しているシートではなくマスターシートからコピーしたいのはなぜですか?ワークシートを保護しているワークブックの中に? –

+0

なぜこのようにですか? は 'ワークシート、rngTempとしてレンジ 設定WS =のThisWorkbook.Sheets( "スタート") 設定rngTemp = ActiveCellの Sheets.FillAcrossSheets ws.rngTempとして暗いWSは、xlFillWithAll' 他のシートが保護されたarn't? – Pearli

+0

他のシートは保護されていません。私はvba .i googleに新しい人たちです。コードを編集して少し変更します。 –

答えて

1

すべてのシートは、アレイに割り当てる必要があると記入する範囲は、アレイ内のシートからでなければなりません 。この

を試してみてください
Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim ws As Worksheet 
    Dim shtArray As Variant 
    shtArray = Array("Master", "Sheet1", "Sheet2", "Sheet3") 
    Set ws = ThisWorkbook.Sheets("Master") 
    Sheets(shtArray).FillAcrossSheets Target 

    'Dim columnName As String 
    'columnName = Split(ActiveCell.Address, "$")(1) 
    'Sheets(shtArray).FillAcrossSheets ws.Range(columnName & ActiveCell.Row), xlFillWithAll 
End Sub 
+0

新しいシートが追加されたとして配列を持たせることはできません。 –

+0

@MVCnewbie - 'FillAcrossSheets'配列を使用するためには、配列が必要です。もう1つのオプションは、すべてのシートをループすることです。 – Mrig

+0

@MVCnewbie - シートのリストをワークシートのいずれかに保存し、コードとして配列として使用することもできます。 – Mrig