Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
452to456
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
452to456
452to456
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

.SpecialCells(xlCellTypeVisible) versteh ich nicht

.SpecialCells(xlCellTypeVisible) versteh ich nicht
08.07.2004 14:49:57
Reinhard
Hallo Wissende,
bei der Entwicklung des Codes zu:
https://www.herber.de/bbs/user/8247.xls
(evtl. Lösung von https://www.herber.de/forum/messages/451763.html )
hat mich SpecialCells(xlCellTypeVisible) sehr lange aufgehalten:-(
In A4 ist ein Autofilter, der über den Bereich A5:A106 geht. Wenn ich was Bestimmtes auswähle, sind nur die Zellen A10, A44, A78 eingeblendet, mit dem gleichen Inhalt zb "Gesundbrunnen-Apotheke)".
Mit .SpecialCells(xlCellTypeVisible).Cells(1,1) kann ich auf A10 zugreifen.
Leider nicht mit .SpecialCells(xlCellTypeVisible).Cells(2,1), da komme ich zu A11.
Makro1 liefert fälschlicherweise ungleich=wahr da es A10 mit A11 und A11 mit A12 vergleicht, wo verschiedene Apos drinstehen.
makro2 liefert korrekt ungleich=falsch da es A10 mit A10, A10 mit A44, A10 mit A78 vergleicht.
Wie komme ich nun an die eingeblendeten Zellen per Index ?, ohne per Schleife den Bereich A5:A106 nach eingeblendet zu durchforsten oder mit umgebautem Makro2 jede Zelle in ein Array einzulesen?
Dankeschön
Gruß
Reinhard

Sub test1()
Dim ungleich As Boolean
Set Bereich = Worksheets("Daten").Range("A5:A106").SpecialCells(xlCellTypeVisible)
For n = 1 To Bereich.Cells.Count - 1
If Bereich.Cells(n, 1) <> Bereich.Cells(n + 1, 1) Then
ungleich = True
Exit For
End If
Next n
MsgBox ungleich
End Sub


Sub test2()
Dim ungleich As Boolean
Set Bereich = Worksheets("Daten").Range("A5:A106").SpecialCells(xlCellTypeVisible)
For Each ze In Bereich.Cells
If Bereich.Cells(1, 1) <> ze Then
ungleich = True
Exit For
End If
Next ze
MsgBox ungleich
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: .SpecialCells(xlCellTypeVisible) versteh ich nicht
09.07.2004 08:58:55
Uwe
Hallo Reinhard,
da die sichtbaren Zellen keinen zusammengehörigen Bereich darstellen,
müssen die Teilbereiche nacheinander durchlaufen werden.
Hier der entsprechende Code für Deine Mappe:

Private Sub Worksheet_Calculate()
Dim ungleich As Boolean
Dim rngSZBereich As Range
Dim rngSZArray As Range
Dim rngSZ As Range
Dim rngZE As Range
Set rngSZBereich = Worksheets("Daten").Range("A5:A106").SpecialCells(xlCellTypeVisible)
Set rngZE = rngSZBereich.Cells(1)
Application.ScreenUpdating = False
Sheets("Diagramm").Select
With ActiveChart
.HasTitle = True
Select Case rngSZBereich.Cells.Count
Case 1
.ChartTitle.Text = Bereich.Cells(1, 1).Value
Case 102
.ChartTitle.Text = "Alle Apotheken"
Case 2 To 101
For Each rngSZArray In rngSZBereich
For Each rngSZ In rngSZArray
ungleich = rngSZ <> rngZE
If ungleich Then Exit For
Next rngSZ
Next rngSZArray
.ChartTitle.Text = IIf(ungleich, "Einige Apotheken", "Alle " & Chr(34) & rngSZBereich.Cells(1).Value & Chr(34) & " Apotheken")
End Select
.Deselect
End With
Worksheets("Daten").Activate
Range("A1").Select
Set rngSZBereich = Nothing
Application.ScreenUpdating = True
End Sub

Gruß Uwe
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige