Schleife durch Markierte Zellen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Schleife durch Markierte Zellen
von: Robin
Geschrieben am: 28.04.2015 11:55:40

Hallo ihr Lieben,
ich verzweifle gerade an folgender Problemstellung:
Ausgelöst durch einen CommandButton sollen in Spalte D eines Excelblattes innerhalb einer Markierung 6-stellige Auftragsnummern, durch einen Unterstrich getrennt um eine 3-stellige Probennummer ergänzt werden.
-Die Auftragsnummer soll aus der ersten Zeile der Markierung (jeweils nur bis zum Unterstrich übernommen werden, und durch die oben genannten Probennummern (getrennt durch "_") ergänzt werden.
z.B. "123456_015" übernommen wird "123456" addiert wird "_" & "Probennummer" zu "123456_Probennummer"
-Die (ganzzahligen) Probennummern werden per Hand eingetragen, sollen aber um voranstehende Nullen ergänzt werden, damit diese immer 3-stellig sind.
z.B. "2" soll zu "002" werden, "15" soll zu "015" werden.
Beispiel für die Markierten Zellen:
123456_008
6
7
8
17
18
23
29
109
Soll werden:
123456_008
123456_006
123456_007
123456_008
123456_017
123456_018
123456_023
123456_029
123456_109
-Ich möchte das ganze nur in einer Markierung ablaufen lassen, die Schleife läuft bei mir aber nicht fehlerfrei und ich weiß nicht, ob man dafür wirklich eine Schleife benötigt, oder ob es auch mit "For each" geht.
Hier mein bisheriger Code:

Sub AddNumberInSelection()
Dim strErsteZelle As String
Dim strLetzteZelle As String
Dim strAuftrag As String
Dim strProbe As String
Dim i As Integer
strErsteZelle = Selection.Row
strLetzteZelle = Selection.Rows.Count + Selection.Row - 1
strAuftrag = Selection.Cells(1, 1)
i = strErsteZelle + 1
Do Until i = strLetzteZelle + 1
strProbe = Selection.Cells(i, 1).Value
Sheets(1).Cells(i, 4).Value = strAuftrag & strProbe
i = i + 1
Loop
End Sub

komischerweise funktioniert mein Code nur für die ersten beiden Zeilen der Markierung, danach bleibt die Variable strProbe leer ("").
Liebe Grüße,
Robin

Bild

Betrifft: AW: Schleife durch Markierte Zellen
von: Hajo_Zi
Geschrieben am: 28.04.2015 12:25:26
Hallo Robin,

Option Explicit
Sub Auffuellen()
    Dim RaZelle As Range
    Dim StWert As String
    For Each RaZelle In Selection
        If RaZelle.Address = Selection.Cells(1).Address Then
            StWert = Left(RaZelle, InStr(RaZelle, "_"))
        Else
            RaZelle = StWert & Format(RaZelle, "000")
        End If
    Next RaZelle
End Sub


Bild

Betrifft: AW: Schleife durch Markierte Zellen
von: Robin
Geschrieben am: 28.04.2015 12:46:05
Hallo Hajo,
ich bin begeistert, wie du das in so einem kurzen Makro nachvollziehbar gelöst hast.
Liebe Grüße und Vielen Dank,
Robin

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Schleife durch Markierte Zellen"