2016-07-20 14 views
0

Ich möchte vorweg damit sagen, dass ich mit Codierung weitgehend unerfahren bin. Ich habe selbst an einem Projekt gearbeitet und bin schließlich gegen eine Wand gerannt, die ich nicht durch einfaches Googlen lösen kann.Ändern Sie einen Bereich von Zellen auf einem oder mehreren Blättern basierend auf einem ausgewählten Bereich von Zellen in einem Hauptblatt

Um kurz mit relevanten Details zu erklären, habe ich eine Arbeitsmappe mit einer variierenden Anzahl von Arbeitsblättern, die jeweils eine bestimmte Zelle für Text (später erläutert) und ein Kontrollkästchen haben.

Mein Ziel ist es, einen Bereich von Zellen, in der Regel 1-5 in einer Reihe, und dann eine Schaltfläche, um die Farbe der gleichen ausgewählten Zellen aller Blätter mit einem bestimmten Kriterien zu ändern. Die Kriterien, dass nur die Blätter, die "Office" in der oben genannten Zelle aufgeführt haben, und das Kontrollkästchen deaktiviert sind, werden geändert.

Während ich kein Problem mit Excel Zyklus durch die Blätter und tun Sie etwas nur auf den Blättern, die die Kriterien erfüllen, das Problem kommt mit dem Versuch, die gleichen Zellen wie auf dem Hauptblatt ausgewählt bearbeiten.

Die Codierung ich so weit gekommen sind:

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 

Der Fehler Ich erhalte ist: Anwendungs ​​definiert oder Objekt definierte Fehler.

Hoffentlich gibt es eine Möglichkeit, dies auszuführen. Ich würde jede Hilfe sehr schätzen, die ich bekommen kann.

Antwort

0

Sie die .Address Eigenschaft eines Bereichs verwenden können. Ich bin mir ziemlich sicher, dass Sie einen Fehler erhalten, weil Ihre Auswahl auf einem Blatt liegt und Sie versuchen, in einem anderen Blatt auf diesen Bereich zu verweisen. Nur die Adresse des Bereichs sollte dieses Problem beheben.

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 

Die einzige Prüfung, die ich an diesem Code gemacht habe, war die Verwendung dieses Sub. Ich wählte einen Bereich auf meinem Arbeitsblatt und lief das Makro und die msg-Box sagte Q12: U26

+0

Dies funktionierte für das erste Blatt, das die Kriterien erfüllte, aber als es zum zweiten kam, kam es zu dem gleichen Fehler. – Pilarczyk86

+0

Scratch, dass ich die anderen Blätter geschützt hatte, so musste ich sie ungeschützt, um das Problem zu lösen. Vielen Dank! Das funktioniert perfekt! – Pilarczyk86

0

sollte diese Arbeit:

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

Leider bekomme ich immer noch den gleichen Fehler auf der Zeile "für jede Zelle". – Pilarczyk86

Verwandte Themen