Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Function verketten auf SpecialCells(Visible) erweitern

Forumthread: VBA Function verketten auf SpecialCells(Visible) erweitern

VBA Function verketten auf SpecialCells(Visible) erweitern
24.09.2024 16:14:52
Udo D.
Hallo Forum, grüße Euch,

bräuchte auch mal etwas Hilfe eurerseits, habe einen älteren Beitrag von Sepp entdeckt,
indem er via einer Function es ermöglicht bei entspr. Formeleingabe sich ( die in der Formel
verwiesenen Bereiche ) zu verketten - in einer entspr. Zelle dann.

Habe es selbst auch schon so erweitern können das als Trenner einen Absatz gemacht wird.
Mir fehlt jetzt nur noch der entscheidende Index an welcher Stelle ( so dies mgl. wäre ), dass
bei dem in der Formel verwiesenen Bereich nur die sichtbaren Zeilen berücksichtigt werden,
sprich würden sich innerhalb des verwiesenen Bereiches ausgeblendete Zeilen befinden
so sollte das Formelergebnis dies Inhalte ebenfalls ignorieren - sofern dies so möglich wäre !?

An welcher Stelle im Code müsste man hier sowas wie Range(specialcells(xlCellTypeVisible)
einbinden oder ähnliches, ginge das so überhaupt ... ?
An der Stelle hänge ich leider, habt ihr ne Idee, soll ich dazu ne Beispieldatei erstellen
oder reicht euch der von mir leicht modifizierte Code von Sepp ?

' ————————————————————————————————————————————————————
' wird über direkte Formeleingabe in einer Zelle wirksam -- zB. =verkettenm(A1:A16;";")
' ————————————————————————————————————————————————————
' https://www.herber.de/forum/archiv/1160to1164/1160919_Inhalte_mehrere_Zellen_in_eine_Zelle.html [ von SEPP ]

Public Function VerkettenM(Bereich As Range, _
Optional Trenner As String = "", _
Optional Leerzellen As Boolean = False) As String

Dim str As String
Dim rng As Range

For Each rng In Bereich
' Set rng = ActiveSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible)

If rng > "" Or Leerzellen Then
str = (str & rng & Trenner) & vbLf ' hier noch [ & vbLf ] ergänzt für Absatz als Trenner in der Zelle
End If
Next

VerkettenM = Left(str, Len(str) - Len(Trenner))
End Function



herzlichen Dank schon vorab für eure Tipps
LG udo
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Function verketten auf SpecialCells(Visible) erweitern
24.09.2024 16:29:19
daniel
HI

wenn ich mich nicht täusche, dann kannst du .SpeicalCells in Formeln nicht anwenden.

du kannst aber einfach zusätzlich eine Abfrage einbauen, um die ausgeblendeten Zeilen zu überspringen:

if rng.EntireRow.Hidden = False Then

Gruß Daniel

AW: VBA Function verketten auf SpecialCells(Visible) erweitern
24.09.2024 16:57:18
Yal
Moin,

ohne den Hinweis von Daniel wäre ich voll gegen die SpecialCells-Wand gelaufen.

nicht getestet:
Public Function VerkettenM(ByVal Bereich As Range, Optional Trenner As String = ";", Optional MitLeerzellen As Boolean = False, Optional NurVisible As Boolean = False) As String

Dim Erg As String
Dim rng As Range

For Each rng In Bereich
If NurVisible And Not (rng.EntireColumn.Hidden Or rng.EntireRow.Hidden) And (rng > "" Or MitLeerzellen) Then Erg = Erg & Trenner & rng.Value
Next

VerkettenM = Mid(Erg, Len(Trenner) + 1)
End Function


VG
Yal
Anzeige
AW: VBA Function verketten auf SpecialCells(Visible) erweitern
25.09.2024 01:43:00
Udo D
Hallo Yal,

vielen Dank auch an Dich, werde es Morgen mal testen im Büro,
Danke schon mal
LG udo
perfekt, so funktionierts, vielen lieben Dank ...
24.09.2024 16:51:01
Udo D.
Hallo Daniel,

herzlichen Dank, habs schon eingesetzt, funktioniert perfekt (siehe unten),
Danke dir !
LG Udo

' ——————————————————————————————————————————————————
' wird über direkte Formeleingabe in einer Zelle wirksam -- zB. =verkettenm(A1:A16;";")
' ——————————————————————————————————————————————————
' https://www.herber.de/forum/archiv/1160to1164/1160919_Inhalte_mehrere_Zellen_in_eine_Zelle.html [ von SEPP ]

Public Function VerkettenM(Bereich As Range, _
Optional Trenner As String = "", _
Optional Leerzellen As Boolean = False) As String

Dim str As String
Dim rng As Range

' Set rng = ActiveSheet.Range.SpecialCells(xlCellTypeVisible)
For Each rng In Bereich
If rng.EntireRow.Hidden = False Then
If rng > "" Or Leerzellen Then
str = (str & rng & Trenner) & vbLf ' hier noch [ & vbLf ] ergänzt für Absatz als Trenner in der Zelle
End If
End If
Next

VerkettenM = Left(str, Len(str) - Len(Trenner))
End Function
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige