Ciao,
se ho capito bene questo dovrebbe fare quello che chiedi:

codice:
Private Sub CommandButton1_Click()

   With Range("H:H")
      .Value = ""
   End With
   
   For Each casella In Range("a1", "g10")

       If casella.Interior.ColorIndex = xlColorIndexNone Then
          casella.Value = ""
       Else
          If Cells(casella.Row, 8).Value = "" Then
             Cells(casella.Row, 8).Value = casella.Value
          Else
             Cells(casella.Row, 8).Value = Cells(casella.Row, 8).Value & "," & casella.Value
          End If
       End If

   Next

End Sub

Il with iniziale ripulisce la colonna H da precedenti contenuti e poi il ciclo esplora il range dei dati (impostalo con il tuo range) e, casella per casella si chiede se il colore interno è impostato o meno.

Se non è impostato cancella il contenuto della cella.

Se invece è impostato accoda il contenuto della cella a quanto già presente nella cella H (che è la numero 8).

Vedi un po' se va bene
Ciao