2016-07-26 5 views
0

したがって、1つを除くすべてのワークシートで範囲を編集しようとしています。これまでのところ、私はこのVBA複数のワークシートの範囲を編集

Sub Test2() 

    Dim WS As Worksheet 

    For Each WS In ActiveWorkbook.Worksheets 
     If WS.Name <> "Summary" Then 
      Range(Cells(1, 3), Cells(1, 3)) = "test" 
      MsgBox WS.Name 
     End If 
    Next WS 

End Sub 

を思い付いたそれは、セルC3の概要という名前のないすべてのワークシートに「テスト」を置くことになりました。その代わりに、単に "テスト"をアクティブなシートに追加し、他のものは追加しません。メッセージボックスは正常に動作しています。 完全なプロジェクトには、文字列長の条件に基づいて各シートにいくつかのセルを編集することが含まれていますが、複数のシート上の編集範囲に詰まっています。

お願いします。

+0

C1。 @Thomasの例では、 範囲( "C3")= "テスト" と動作しませんでした。範囲(セル(1,3)、セル(1,3))= "テスト" オブジェクト '_Worksheet'の 'Range'が失敗しました セル形式であることが重要です。後でその変数を変数に使用できます。 – Gatiivs

+0

回答にコメントがあります。それが私の問題を解決しました。ありがとうございました! – Gatiivs

答えて

3

ワークシートWSへの参照を修飾する必要があります。 1グループのセルを参照するにはRange(Cells(1, 3), Cells(1, 3))を使用します。代わりにWS.Range("C3")またはWS.Cells(3,3)を使用してください。

Sub Test2() 

    Dim ws As Worksheet 

    For Each ws In ActiveWorkbook.Worksheets 
     With ws 
      If .Name <> "Summary" Then 

       .Range("C3") = "test" 
       MsgBox .Name 

      End If 
     End With 
    Next ws 

End Sub 
1

ちょうどその時、それは正常に動作します

WS.Range("C1") = "test" 

に声明Range(Cells(1, 3), Cells(1, 3))を変更します。また、あなたが

WS.[C1] = "test" 
+3

WS.Range(WS.Cells(1,3)、WS.Cells(1,3))= "test" 'の範囲のセルを修飾する必要があります。オブジェクト '_Worksheet'の 'メソッド'範囲 'が失敗しました。 –

+0

@ThomasInzina範囲の前に 'WS.'を書いていないことを除いて、OPはすでにフルコードを書いています。だから私は彼のコードを書き直す必要はないので、WSの前に 'WS 'を追加するように言ったのです。 –

+0

はい@ThomasInzina。 'Run-Time error '1004'というエラーが発生しました。問題を解決したコメントは – mulla

0

トーマスは、各ワークシートをループ内の音であることを示している方法を使用することができ、私はしかし、あなたが名前「概要」を含む複数のシートを持っていた場合のための方法を強調したいと思います。同じ名前のシートが複数ある場合は、「要約1」、「要約2」などの名前を別々に指定する必要があります。

これはInStr()関数でテストできますシートの名前の中に文字列Summaryがある場合:

Sub Test2() 
    For Each ws In ActiveWorkbook.Worksheets 
     With ws 
      If InStr(1, .Name, "Summary") = False Then 
       .Range("C3") = "test" 
       MsgBox .Name 
      End If 
     End With 
    Next ws 
End Sub 
関連する問題