2016-07-20 9 views
0

私はコーディングではほとんど経験がないと言ってこれを前にしたいと思います。私は自分自身の仕事でプロジェクトに取り組んできました。そして、ついに私は簡単なグーグルで解決できない壁に遭遇しました。メインシートの選択されたセル範囲に基づいて1つ以上のシートのセル範囲を変更します

詳細を簡単に説明すると、テキストには特定のセル(後述)とチェックボックスを持つさまざまな数のワークシートを持つワークブックがあります。

私の目標は、通常1〜5行の範囲のセルを選択して、特定の条件が与えられたすべてのシートの同じ選択セルの色を変更するボタンを持つことです。上記のセルに「オフィス」が表示されているシートとチェックボックスがオフの状態のシートのみが変更されるという条件です。

Excelでシートを循環させる問題はなく、条件を満たすシートのみで何かを行うのは問題ですが、問題はメインシートで選択されているものと同じセルを編集しようとしていることです。

私は今のところ出ているコーディング:私は取得しています

Dim cell As Range 
Dim n As Integer 
Set cell = Selection 
If Range("AN6").Text = "Office" Then 
    For n = 1 To Sheets.Count - 2 
     If Sheets(n).Range("AN6").Text = "Office" And Sheets(n).CheckBox1.value = False Then 
      For Each cell In Selection 
       Sheets(n).Range(cell).Interior.ColorIndex = 56 
      Next cell 
     End If 
    Next n 
End If 

エラーがある:アプリケーション定義またはオブジェクト定義のエラー。

これを実行する方法があります。私が得ることができるどんな助けにも大いに感謝します。

答えて

0

あなたが範囲の.Addressプロパティを使用することができます。私はあなたの選択が1つのシートにあり、その範囲を別のシートで参照しようとしているため、エラーが発生していると思います。範囲のアドレスだけを使用すると、その問題が解決されます。

Dim cell As Range 
Dim n As Integer 
Set cell = Selection 
If Range("AN6").Text = "Office" Then 
    For n = 1 To Sheets.Count - 2 
     If Sheets(n).Range("AN6").Text = "Office" And Sheets(n).CheckBox1.value = False Then 
      For Each cell In Selection 
       Sheets(n).Range(cell.Address(False,False)).Interior.ColorIndex = 56 
      Next cell 
     End If 
    Next n 
End If 

このコードで行った唯一のテストは、このサブを使用していました。ワークシートの範囲を選択してマクロを実行し、msgボックスにQ12が表示されました。U26

Sub test() 
    Dim cell As Range 
    Set cell = Selection 
    MsgBox cell.Address(False, False) 
End Sub 
+0

これは基準を満たした最初のシートでは機能しましたが、2番目のシートに着いたときには同じエラーが発生しました。 – Pilarczyk86

+0

他のシートを保護していたので、問題を解決するために必要に応じて保護を解除する必要がありました。ありがとう!これは完全に動作します! – Pilarczyk86

0

これは動作するはずです:

Sub test() 

    With Selection 
     startRow = .Cells(1).Row 
     startColumn = .Cells(1).Column 
     endRow = .Cells(.Cells.Count).Row 
     endColumn = .Cells(.Cells.Count).Column 
    End With 
    If Range("AN6").Text = "Office" Then 
     For n = 1 To Sheets.Count - 2 
      If Sheets(n).Range("AN6").Text = "Office" And Sheets(n).CheckBox1.value = False Then 
       For Each cell In Range(Sheets(n).Cells(startRow, startColumn), Sheets(n).Cells(endRow, endColumn)) 
        cell.Interior.ColorIndex = 56 
       Next cell 
      End If 
     Next n 
    End If 
End Sub 
+0

残念ながら、「For Each cell」行には同じエラーが表示されます。 – Pilarczyk86

関連する問題