Markierung/Auswahl erweitern_2
07.09.2021 19:02:32
Hubertus
mit meiner Antwort an Oberschlumpf habe ich wohl zu lange gewartet, der Thread ist ins Archiv gewandert und abgerissen. Jetzt ein neuer Versuch:
Aufgabenstellung:
Oberste Zelle (Zeile 2) in Spalte N markieren
Auswahl auf die darunter anschließenden Zellen mit gleichem Wert erweitern
kopieren in die Spalte M, links daneben
Werte grün formatieren
MsgBox J/N ob die Quellwerte auch grün formatiert werden sollen
erste Zelle in der "Quellspalte" N unterhalb auswählen
Auswahl auf die darunter anschließenden Zellen mit gleichem Wert erweitern
usw. (bis erste leere Zelle)
Von Oberschlumpf (sorry für das hingeschlampte Beispielblatt) bekam ich eine elegante Lösung, die zu verstehen mich als VBA-Dilettant leider völlig überfordert.
Mein Versuch, sein Script per F8 schrittweise abzuarbeiten und zu schauen, was jeweils passiert, funktioniert nicht und ich weiß nicht warum.
Unten das Script von Oberschlumpf mit meinen nix-versteh-Kommentaren, eine Beispielmappe (diesmal korrekt ;-) ) mit VBA lade ich auch hoch: https://www.herber.de/bbs/user/147947.xlsm
Vielleicht kann mir jemand auf die Sprünge helfen, vielen Dank vorab!
Hubertus
Option Explicit
Public pboExit As Boolean 'Diese Deklaration/Anweisung? verstehe ich nicht, warum Public und was ist pboExit (As Boolean)?
Sub sbMeineVersion_Werte_nach_links_kopieren(ByVal zeile As Long) 'Bedeutung von "sb" vor MeineVersion & Zusatz (ByVal zeile As Long)?
Dim lloRow As Long 'Warum das llo?
lloRow = zeile + 1 'zeile ist doch kein gültiger Begriff? Warum funktioniert der?
Do Until Range("N" & zeile).Value Range("N" & lloRow).Value 'warum funktioniert das "N" als Range ? Wegen der Verknüpfung '& zeile' bzw. '& lloRow' ?
lloRow = lloRow + 1
Loop
lloRow = lloRow - 1
With Range("N" & zeile & ":N" & lloRow)
.Font.ColorIndex = xlAutomatic
.Font.TintAndShade = 0
.Copy .Offset(0, -1)
.Offset(0, -1).Font.Color = -11489280
.Offset(0, -1).Font.TintAndShade = 0
If MsgBox("VO-Preis auch grün?", vbYesNo + vbDefaultButton1, "Ja-Nein-Frage") = vbYes Then
.Font.Color = -11489280
End If
End With
zeile = lloRow + 1
Do Until Range("N" & zeile).Value = ""
sbMeineVersion_Werte_nach_links_kopieren lloRow + 1
pboExit = True
Loop
If pboExit = True Then End
End Sub