Anzeige
Archiv - Navigation
1476to1480
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
Inhaltsverzeichnis

Verbundene Zellen in gesamter Arbeitsmappe suchen

Verbundene Zellen in gesamter Arbeitsmappe suchen
02.03.2016 12:10:31
Volker
Liebe Forumsgemeinde!
Ich suche nach einer Möglichkeit, einen bestimmten Zellbereich (allerdings in allen Tabellenblättern der Arbeitsmappe) nach verbundenen Zellen zu durchsuchen und die Zelladresse sowie den Blattnamen aller Fundstellen nach Gesamtdurchlauf der Suche in einer Messagebox auflisten zu lassen.
Ich hoffe, Ihr könnt mir behilflich sein.
Viele Grüße
Volker

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verbundene Zellen in gesamter Arbeitsmappe suchen
02.03.2016 13:08:42
ChrisL
Hi Volker
Sub t()
Dim WS As Worksheet, sErgebnis As String
Dim Zelle As Range, b As Boolean
Dim ar As Variant, x As Long, y As Long
x = -1
For Each WS In ThisWorkbook.Worksheets
For Each Zelle In WS.Range("A1:X100") ' anpassen
If Zelle.MergeCells = True Then
x = x + 1
If x = 0 Then
ReDim ar(x)
Else
ReDim Preserve ar(x)
End If
ar(x) = WS.Name & "!" & Zelle.MergeArea.Address(0, 0)
End If
Next Zelle
Next WS
For x = 0 To UBound(ar)
b = True
For y = 0 To x
If y  x And ar(x) = ar(y) Then
b = False
Exit For
End If
Next y
If b Then
If sErgebnis = "" Then
sErgebnis = "Verbundene Zellen:" & vbCrLf & ar(x)
Else
sErgebnis = sErgebnis & vbCrLf & ar(x)
End If
End If
Next x
MsgBox sErgebnis
End Sub

cu
Chris

Anzeige
das geht viel kürzer
02.03.2016 13:17:59
Rudi
Hallo Chris,
und wahrscheinlich auch schneller.
Sub t()
Dim WS As Worksheet, sErgebnis As String
Dim Zelle As Range
Dim oAddr As Object
Set oAddr = CreateObject("scripting.dictionary")
For Each WS In ThisWorkbook.Worksheets
For Each Zelle In WS.Range("A1:X100") ' anpassen
If Zelle.MergeCells = True Then
oAddr(WS.Name & "!" & Zelle.MergeArea.Address(0, 0)) = 0
End If
Next Zelle
Next WS
If oAddr.Count Then
sErgebnis = Join(oAddr.keys, vbLf)
MsgBox sErgebnis
End If
End Sub
Gruß
Rudi

AW: das geht viel kürzer
02.03.2016 13:23:46
ChrisL
Hi Rudi
Schöne Lösung. Danke für Input.
Mit scripting.dictionary müsste ich mich schon lange einmal auseinander setzen.
cu
Chris

Anzeige
AW: das geht viel kürzer
02.03.2016 13:31:19
Rudi
Hallo,
Mit scripting.dictionary müsste ich mich schon lange einmal auseinander setzen.
Lohnt sich auf jeden Fall.
Gruß
Rudi

AW: das geht viel kürzer
03.03.2016 16:59:57
Volker
Hallo an alle, die so schnell geantwortet haben. Vielen Dank dafür!!! Die Lösung von Rudi funktioniert super und ich kann darauf aufbauen.
@Rudi
Was ich aber noch nicht begriffen habe, ist die Funktion / Aufgabe bzw. der Effekt von "CreateObject("scripting.dictionary")"
Hier wäre ich sehr dankbar für Aufklärung.
Grüße
Volker

AW: das geht viel kürzer
03.03.2016 17:20:25
Daniel
Hi
ein Dictionary ist eine spezielle Form eines eindimensionales Arrays.
vereinfacht gesagt ist dein Dicitionary ein eindimensionales Variant-Array mit einem Freitext-Index.
dh. du kannst als Index jeden beliebigen Wert (sogar Objekte) verwenden, ohne dass du dich darum kümmern musst, wieviele Werte dein Array später mal haben soll und was du als Index verwenden willst.
(bei normalen Arrays kannst du als Index nur Ganzzahlen verwenden und du musst schon gleich bei der Dimensionierung festlegen, wieviele Werte das Array aufnehmen können soll)
mit
Dim oAddr As Object
Set oAddr = CreateObject("scripting.dictionary")

erstellst du so ein Dictionary.
Gruß Daniel

Anzeige
AW: das geht viel kürzer
04.03.2016 20:51:46
Volker
Hallo Daniel!
Verstehe das soweit. Ich glaube, da muss ich mich mal tiefer einlesen.
Vielen Dank!
Volker

AW: Verbundene Zellen in gesamter Arbeitsmappe suchen
02.03.2016 13:27:47
snb

Sub M_snb()
On Error Resume Next
With Application.FindFormat
.WrapText = False
.ShrinkToFit = False
.MergeCells = True
End With
For Each Sh In Sheets
c00 = c00 & vbLf & Sh.Cells.Find("*", , , , , , , , True).MergeArea.Address
Next
MsgBox c00
End Sub

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige