Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1916to1920
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

VBA Zellenverbd. v links / rechts wählen

VBA Zellenverbd. v links / rechts wählen
09.02.2023 09:24:19
udo.D
Guten Morgen Forum, ich habe gestern ( erst ) festgestellt dass es tatsächlich einen Unterschied macht ob ich in Excel irgend einen Zellverband von links aus starte und nach rechts ziehen ( zur Auswahlbestimmung ) oder von rechts nach links. Ich habe ein Marko das in einer aktiven Zeile ( unabhängig wieviel Zeilen zur Auswahl gehören, es geht vielmehr um die beteiligten Spalten. Von den Spalten sind immer unterschiedliche ausgeblendet. Mit meinem Vorgehen die ausgeblendeten Spalten wieder einzublenden, indem ich über den ausgeblendeten Bereich die jeweils direkt angrenzenden beiden Spalten selektiere ( szs. die davor und dahinter ), dann macht es scheinbar einen Unterschied, ob ich die beiden Zellen von links aus beginnend markiere oder von rechts aus nach links fahre. Das Makro verhält sich dann nicht gleich. Sprich Excel merkt sich welches sozusagen die Startzelle und die Endzelle dabei ist, obwohl beide Varianten den gleichen Zellverband bestimmen ? Das war mir in all den Jahren noch gar nicht bewusst. Gibt es einen Index / Anweisung der egal welche Variante der Auswahl-bestimmung ich absolviere z.b. immer die rechte Zelle hierbei als Startzelle ansieht obwohl ich zB doch von links nach rechts wählte ? Hintergrund : ist ein Makro das sich am ausgeblendeten Spalten-Bereich an die linkerseits erste angrenzende Zelle orientiert und mit folgendem Code : Selection.Offset(0, Range(Selection.Offset(0, 1), Columns(ActiveCell.Column)).EntireColumn.SpecialCells(xlCellTypeVisible).Column - Selection.Column).Select ' Sprung nach re ( sichtbare ) hier aus dem Forum den ausgeblendeten Bereich überspringt in die nächste sichtbare Zelle, also die die optisch direkt daneben liegt ( weil die Spalten dazwischen ja noch ausgebendet sind ) und somit also in diese anstatt in die erste ausgeblendete Spate springt. Von links aus startend funktioniert dieser Code, setzte ich jedoch an der rechten Seite des ausgeblendeten Blocks an und möchte linkswärts diesen in die nächste sichtbare Zelle überspringen passiert nichts ( ich müsste den Offsetwert dann um die Anzahl der ausgebendeten Spalten im Spaltenindex angeben - und da liegt das Problem, diese ausgeblendeten Spaltenverbunde sind unterschiedlich groß. Ich tüftle also gerade an einer Art korregierenden Auswahl sprich wählt ein Anwender jenen Bereich von rechts beginnend (als Auswahlstart) nach links hinweg aus, dann würde die gesuchte Anweisung ( wo ich eure Hilfe benötige ) eigentlich genau den gleichen Zellverband nochmals erneut anwählen, nur dann von links beginnend nach rechts ( optisch demnach das gleiche Ergebnis ) aber scheinbar unterscheidet Excel hier - was mir nicht bewusst war bislang. Hättet ihr dazu Ideen / Ansätze Bin für jeden Implus dankbar LG udo

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zellenverbd. v links / rechts wählen
09.02.2023 09:34:41
udo..D
... hatte zum Schluß meiner Frage die Auswahlrichtung falsch angegeben
Mein Spalten wiedereinblenden Makro läuft von rechts ab - ab. Sprich wählt ein Anwender jenen Zellverband von rechts aus
( erste Spalte hinter den ausgeblendeten Spalten ) an und endet dann linksseits in der ersten Spalte vor dem ausgebledneten Spaltenbereich,
Dann funktioniert der gesamte Ablauf bei mir, wähle ich aber den Zellverband von links nach rechts klappts nicht mehr.
ich suche also einen Code der die gesetzte Zellauswahl erneut halt nochmal ( in Sich ) gleich wählt, nur dann eben immer mit der rechten beteiligten Zelle
als Start und der linken als Ende der Auswahl.
Danach würden meine weiteren Anweisung greifen, sonst leider nicht ...
Habt ihr ne Idee ;-)
LG udo
Anzeige
gelöst / etwas aufwendig
09.02.2023 16:52:20
udo.D
Falls der eine oder andere schon in den Startlöchern steht, dann dennoch lieben Dank für eure Mühen.
Konnte mir im Archiv einige Brocken - die mir fehlten - zusammenstückeln, so funktioniert es schon mal ganz gut.
Sprich ich wähle die rechts angeordnete Zelle neben den ausgeblendeten Spalten aus, und nach auslösen des Makros
überspringt er alle ausgeblendeten Spalten und setzt sich auf die links angeordnete Spalte dessen.
Hier der Code für alle die es evtl. auch mal brauchen,
LG Udo
Sub Spalte_Offset_Start()
            Application.ScreenUpdating = False
            Dim lngSp As Long
            Dim strAdr As String
            Dim lngCnt As Long
            Dim strErg As String
            lngSp = ActiveCell.Column - 1                                      ' Erfasste Spaltennummer
            strAdr = ActiveSheet.Cells(1, lngSp).Address       '   Aus Spaltennummer ermittelte Adresse
            lngCnt = InStr(2, strAdr, "$") - 1                                   '   Ermittlung des zweiten $-Zeichens in der Zelladresse
            strErg = WorksheetFunction.Substitute(Left(strAdr, Len(strAdr) - (Len(strAdr) - lngCnt)), "$", "")  '   Extrahieren der Spalten-Buchstaben aus Zelladresse
            ActiveSheet.Range("AI33").Value = strErg             '  Ausgabe der reinen Spaltenbuchstaben
            Dim c As Range, cL As Range
   For Each c In Range("AR" & ActiveCell.Row & ":" & strErg & ActiveCell.Row).SpecialCells(xlCellTypeVisible)
                Set cL = c
                Do
                Set cL = cL.Offset(0)
                Loop Until Not cL.EntireColumn.Hidden
                cL.Select
                Next c
                End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige