Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1844to1848
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

Markierung/Auswahl erweitern_2

Markierung/Auswahl erweitern_2
07.09.2021 19:02:32
Hubertus
Hallo Leute,
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

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Markierung/Auswahl erweitern_2
07.09.2021 21:46:00
ralf_b
Public pboExit As Boolean ist ein Varialbendeklaration wie dim lloRow as Long. mit dem Unterschied das sie außerhalb von Sub erstellt wird und im ganzen Modul oder wenn Public im ganzen Programm nutzbar ist. p = public, bo = Boolean, Exit = funktionsbeschreibender Name
Damit man im Programm weis wofür die Variable da ist. Man könnte die Variable auch "Klaus " nennen. Macht aber wenig Sinn.
Das sb dürfte den gleichen Sinn haben. Einfach nur ein Unterscheidungsmerkmal.
zeile ist gültig, weil (ByVal zeile As Long) hier die Variable zeile als Parameter an die Prozedur übergeben wird.
Range("Adresstext in Aführungsstrichen weil ein Text")
Range ("N" & zeile ) ist auch nur ein Adresstext z.b. N5
Anzeige
AW: Markierung/Auswahl erweitern_2
07.09.2021 23:02:35
Hubertus
Hallo ralf_b,
dank Dir!
Antworten führen zu neuen Fragen :-)

zeile ist gültig, weil (ByVal zeile As Long) hier die Variable zeile als Parameter an die Prozedur übergeben wird. 
Wodurch bzw. an welcher Stelle wird denn der Ausdruck zeile als aktive Zeile definiert? Oder ist zeile eine allgemeine VBA Variablenbezeichnung?
Hast Du auch eine Erklärung, warum der Schrittbefehl, weder per F8 noch über die Steuerung in der VBA-Editor Menüzeile, bei diesem Script nicht anwendbar ist? Kann ich die Schrittausführung irgendwie erzwingen? Bei der Schrittausführung wird mir durch die Mouseover-Funktion manches etwas deutlicher.
Anzeige
AW: Markierung/Auswahl erweitern_2
07.09.2021 23:56:09
ralf_b
zeile ist hier nur ein sprechender Name für eine Variable.
zeile wird durch den Aufruf der sub prozedur im Programm als Parameter übergeben. z.b. call sbmeineprozedur(25)
in der sbmeineProzedur wird der parameter hier eine zahl 25 zur Variablen zeile mit dem wert 25
ob die zeilenNr die aktive Zeile im Tabellenblatt ist, wird hier nirgends festgelegt.
F8 funktioniert nur mittels Aufruf wegen dem parameter.
z.b.

Sub test()
sbMeineVersion_Werte_nach_links_kopieren 25
End Sub

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige