31.10.2018, 21:53
Hallo ;)
Mein vba-code ist extrem lang...
was der code soll:
ich habe mehrere Bereiche ("Antipasto1", "Antipasto2"...)
diese Bereiche sollen, wenn sie denn nicht leer sind, in die zelle x zusammengefasst mit Bindestrich geschrieben werden.
wenn leer wird der nächste bereich betrachtet,
ansonsten (wenn werte Vorhanden) wird 2 Zeilen unter dem ersten x die zusammenfassung von "Antipasto2" geschrieben.
und so weiter...
also es funktioniert, aber ist extrem unübersichtlich =(
Hat jemand eine Idee wie ich das vereinfachen kann?
Wenn ja vielleicht kurz nen Tipp das ich das das nächste mal alleine schaffe =D
liebe Grüße,
Mein vba-code ist extrem lang...
was der code soll:
ich habe mehrere Bereiche ("Antipasto1", "Antipasto2"...)
diese Bereiche sollen, wenn sie denn nicht leer sind, in die zelle x zusammengefasst mit Bindestrich geschrieben werden.
wenn leer wird der nächste bereich betrachtet,
ansonsten (wenn werte Vorhanden) wird 2 Zeilen unter dem ersten x die zusammenfassung von "Antipasto2" geschrieben.
und so weiter...
also es funktioniert, aber ist extrem unübersichtlich =(
Code:
Public Sub Antipasto()
Dim v As Variant, sZK As String, a As Range, x, rngB As Range
Dim gericht
x = Range("A5").Address
Set rngB = Sheets("Eingabe").Range("Antipasto1") 'Bereich anpassen
If WorksheetFunction.CountA(rngB) <> 0 Then
If Not rngB Is Nothing Then
For Each a In rngB.Areas
If IsArray(a.Value) Then
For Each v In a.Value
If v <> "" Then sZK = sZK & " - " & v
Next
Else
sZK = " - " & a.Value
End If
Next
gericht = IIf(sZK <> "", Mid$(sZK, 2), Empty)
gericht = Right(gericht, Len(gericht) - 2)
End If
Sheets("Layout").Range(x).Value = gericht
x = ActiveSheet.Range(x).Offset(2, 0).Address
Else: x = x
End If
v = ""
sZK = ""
Set rngB = Sheets("Eingabe").Range("Antipasto2") 'Bereich anpassen
If WorksheetFunction.CountA(rngB) <> 0 Then
If Not rngB Is Nothing Then
For Each a In rngB.Areas
If IsArray(a.Value) Then
For Each v In a.Value
If v <> "" Then sZK = sZK & " - " & v
Next
Else
sZK = " - " & a.Value
End If
Next
gericht = IIf(sZK <> "", Mid$(sZK, 2), Empty)
gericht = Right(gericht, Len(gericht) - 2)
End If
Sheets("Layout").Range(x).Value = gericht
x = ActiveSheet.Range(x).Offset(2, 0).Address
Else: x = x
End If
v = ""
sZK = ""
Set rngB = Sheets("Eingabe").Range("Antipasto3") 'Bereich anpassen
If WorksheetFunction.CountA(rngB) <> 0 Then
If Not rngB Is Nothing Then
For Each a In rngB.Areas
If IsArray(a.Value) Then
For Each v In a.Value
If v <> "" Then sZK = sZK & " - " & v
Next
Else
sZK = " - " & a.Value
End If
Next
gericht = IIf(sZK <> "", Mid$(sZK, 2), Empty)
gericht = Right(gericht, Len(gericht) - 2)
End If
Sheets("Layout").Range(x).Value = gericht
x = ActiveSheet.Range(x).Offset(2, 0).Address
Else: x = x
End If
v = ""
sZK = ""
Set rngB = Sheets("Eingabe").Range("Antipasto4") 'Bereich anpassen
If WorksheetFunction.CountA(rngB) <> 0 Then
If Not rngB Is Nothing Then
For Each a In rngB.Areas
If IsArray(a.Value) Then
For Each v In a.Value
If v <> "" Then sZK = sZK & " - " & v
Next
Else
sZK = " - " & a.Value
End If
Next
gericht = IIf(sZK <> "", Mid$(sZK, 2), Empty)
gericht = Right(gericht, Len(gericht) - 2)
End If
Sheets("Layout").Range(x).Value = gericht
x = ActiveSheet.Range(x).Offset(2, 0).Address
Else: x = x
End If
End Sub
Hat jemand eine Idee wie ich das vereinfachen kann?
Wenn ja vielleicht kurz nen Tipp das ich das das nächste mal alleine schaffe =D
liebe Grüße,