Thema Datum  Von Nutzer Rating
Antwort
06.02.2015 11:00:47 1
NotSolved
06.02.2015 17:55:23 Gast80777
NotSolved
Rot Erste und letzte Zeile in einem Farbbereich
06.02.2015 19:09:37 Gast55084
NotSolved
06.02.2015 23:16:06 1
NotSolved
07.02.2015 09:26:18 Gast80777
NotSolved
07.02.2015 18:59:53 Gast21184
NotSolved

Ansicht des Beitrags:
Von:
Gast55084
Datum:
06.02.2015 19:09:37
Views:
773
Rating: Antwort:
  Ja
Thema:
Erste und letzte Zeile in einem Farbbereich

Du kannst auch - nach Farben filtern oder auch nicht filtern - zum Bleistift:

Option Explicit

Sub MeineFarbeImKlecks()
Dim Rng As Range
   Set Rng = MeinKlecks(ActiveCell)
   'Debug.Print FarbeImKlecks(ActiveCell, Rng).Address
   Call MsgBox(" in der Farbumgebung = " & FarbeImKlecks(ActiveCell, Rng).Address, _
      vbInformation, "meine Farbe")
   
End Sub

Sub FarbklecksUmgebung()
   'Debug.Print MeinKlecks(ActiveCell).Address
   Call MsgBox("Umgebung = " & MeinKlecks(ActiveCell).Address, _
      vbInformation, "farbiger Spaltenbereich")
End Sub

Function FarbeImKlecks(myCell As Range, myArea As Range) As Range
Dim c As Range
   Set FarbeImKlecks = myCell
   For Each c In myArea
      If c.Address <> myCell.Address Then
         If c.Interior.ColorIndex = myCell.Interior.ColorIndex Then _
            Set myCell = Union(c, myCell)
      End If
   Next c
   Set FarbeImKlecks = myCell
End Function

Function MeinKlecks(myCell As Range) As Range
Dim Rng As Range, Flt As Range
Dim x As Long, fst As Long, lst As Long

   Set MeinKlecks = myCell
   Set Rng = ActiveSheet.Columns(myCell.Column)
   fst = Rng.Rows(1).Row
   lst = Rng.Rows(Rng.Rows.Count).Row
   Application.ScreenUpdating = False
   With Rng
      .AutoFilter
      .AutoFilter Field:=1, Operator:=xlFilterNoFill
      Set Flt = .SpecialCells(xlCellTypeVisible)
      .AutoFilter
   End With
   Application.ScreenUpdating = True
   If Not Intersect(Flt, myCell) Is Nothing Then
      Call MsgBox("Bereich ungültig!", vbCritical, "Abbruch")
      Exit Function
   End If
   For x = Flt.Areas.Count To 1 Step -1
      If Flt.Areas(x).Cells(1).Row < myCell.Row Then
         On Error Resume Next
         fst = Flt.Areas(x).Row + Flt.Areas(x).Rows.Count
         lst = Flt.Areas(x + 1).Row - 1
         Set MeinKlecks = Range(Cells(fst, myCell.Column), Cells(lst, myCell.Column))
         On Error GoTo 0
         Exit For
      End If
   Next x
End Function

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
06.02.2015 11:00:47 1
NotSolved
06.02.2015 17:55:23 Gast80777
NotSolved
Rot Erste und letzte Zeile in einem Farbbereich
06.02.2015 19:09:37 Gast55084
NotSolved
06.02.2015 23:16:06 1
NotSolved
07.02.2015 09:26:18 Gast80777
NotSolved
07.02.2015 18:59:53 Gast21184
NotSolved