Trouver toutes les cellules qui ont été remplis avec n'importe quelle couleur et en mettant en évidence correspondant en-têtes de colonne dans excel vba

Mon problème:

J'ai fait un grand (2 000) macro qui s'exécute sur notre société modèle et résout certains problèmes courants et met en lumière d'autres enjeux que nous avons préalablement à l'importation. Le fichier de modèle a toujours 150 colonnes et est dans la plupart des cas, plus de 15 000 lignes (parfois même de plus de 30 000). La macro fonctionne bien, en mettant en évidence toutes les cellules qui contiennent des erreurs en fonction de nos règles de données, mais avec un fichier avec autant de colonnes et de lignes j'ai pensé qu'il serait pratique d'ajouter un extrait de ma macro qui l'obligerait à trouver toutes les cellules qui ont été soulignées et ensuite mettre en évidence les en-têtes de colonnes des colonnes qui contiennent les cellules mises en surbrillance.

Méthodes que j'ai trouvé lors de la recherche d'une solution:

  • SpecialCellsxlCellTypeAllFormatConditions ne fonctionne que pour la mise en forme conditionnelle, de sorte que n'est pas plausible méthode pour ma situation
  • Rick Rothstein est UDF de ici
    Sub FindYellowCells()
      Dim YellowCell As Range, FirstAddress As String
      Const IndicatorColumn As String = "AK"
      Columns(IndicatorColumn).ClearContents
      '   The next code line sets the search for Yellow color... the next line after it (commented out) searches
      '   for the ColorIndex 6 (which is usually yellow), so use whichever code line is applicable to your situation
      Application.FindFormat.Interior.Color = vbYellow
      'Application.FindFormat.Interior.ColorIndex = 6
      Set YellowCell = Cells.Find("*", After:=Cells(Rows.Count, Columns.Count), SearchFormat:=True)
      If Not YellowCell Is Nothing Then
        FirstAddress = YellowCell.Address
        Do
          Cells(YellowCell.Row, IndicatorColumn).Value = "X"
          Set YellowCell = Cells.Find("*", After:=YellowCell, SearchFormat:=True)
          If YellowCell Is Nothing Then Exit Do
        Loop While FirstAddress <> YellowCell.Address
      End If
    End Sub

    Ce serait parfait avec un peu de bricolage, à l'exception des fichiers peut avoir plusieurs colorfills. Puisque notre modèle est tellement grand que j'ai appris qu'il faut un certain temps pour exécuter une seule instance de Find pour trouver une seule colorfill dans le UsedRange.

  • À l'aide de filtrage, peut-être à vélo à travers toutes les colonnes et de vérifier s'ils contiennent des cellules qui a tout colorfill. Serait-ce tout plus vite si?

Donc, ma question:

  1. Comment pourrais-je accomplir trouver toutes les colonnes qui contiennent des tout colorfilled cellules? Plus précisément, ce qui serait le plus efficace (plus rapide) façon d'atteindre cet objectif?
Pourquoi ne pas enregistrer les cellules qui sont mis en surbrillance lorsque vous les mettre en évidence? Qui serait plus efficace, puis faire une recherche linéaire sur des centaines de milliers de cellules.
C'est vrai, mais la seule raison pour laquelle je n'ai pas tourné à qui pourtant est parce qu'il exigerait d'édition sur 15 sous-routines et de trouver chaque cas où une cellule serait r en surbrillance. Donc, oui c'est une option/une solution, je suis juste essayer pour voir si il y avait un moyen plus rapide avant de me tourner vers ça.
Vous pouvez créer un seul sous pour faire l'enregistrement (peut-être à une chaîne de caractères dans le nom de la collection) et juste à ajouter des appels à des sous à des endroits qui peuvent être trouvés facilement par une recherche
Pourriez-vous me donner un exemple? Je veux m'assurer que je suis vous suit correctement.

OriginalL'auteur CaffeinatedCoder | 2016-03-13