Clever-Excel-Forum

Normale Version: Array sortieren?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen,

über den Dialog "BildQuelle = Application.GetOpenFilename(Title:="Bitte  Bilder auswählen:", FileFilter:="Bilder,*.jpg", MultiSelect:=True)"
lade ich mir 6 Bilder in den aktiven Sheet (Bilder). Diese werden entsprechend Vorgabe positioniert


Code:
...
    Dim AnZahlPic As String
      AnZahlPic = "6"

    ReDim arrShape(1 To limit)
    For Index = 1 To limit
   
    Set arrShape(Index) = ActiveSheet.Shapes.AddPicture(BildQuelle(Index), False, True, abstand, hoehe, BildBreite, BildHoehe)
Next Index


            With Worksheets("Bilder")
         
            If AnZahlPic = "6" Then
                For Index = 1 To limit
                    Select Case Index
                        Case 1:
                            arrShape(1).Top = Sec1Rahm1.Top + abstandTop
                            arrShape(1).Left = Sec1Rahm1.Left + abstandLinks
                        Case 2:
                            arrShape(2).Top = Sec1Rahm3.Top + abstandTop
                            arrShape(2).Left = Sec1Rahm3.Left + abstandLinks
                        Case 3:
                            arrShape(3).Top = Sec2Rahm1.Top + abstandTop
                            arrShape(3).Left = Sec2Rahm1.Left + abstandLinks
                        Case 4:
                            arrShape(4).Top = Sec2Rahm3.Top + abstandTop
                            arrShape(4).Left = Sec2Rahm3.Left + abstandLinks
                        Case 5:
                            arrShape(5).Top = Sec3Rahm1.Top + abstandTop
                            arrShape(5).Left = Sec3Rahm1.Left + abstandLinks
                        Case 6:
                            arrShape(6).Top = Sec3Rahm3.Top + abstandTop
                            arrShape(6).Left = Sec3Rahm3.Left + abstandLinks
                    End Select
                Next
            End If
               
        End With
...
Meine Frage: wie kann ich die Bilder vorher im Array "arrShape()" sortieren?

IST
Bildnummer_sek_1-.jpg
Bildnummer_sek_1+.jpg
Bildnummer_sek_2-.jpg
Bildnummer_sek_2+.jpg
Bildnummer_sek_3-.jpg
Bildnummer_sek_3+.jpg

SOLL
Bildnummer_sek_1+.jpg
Bildnummer_sek_1-.jpg
Bildnummer_sek_2+.jpg
Bildnummer_sek_2-.jpg
Bildnummer_sek_3+.jpg
Bildnummer_sek_3-.jpg

Grüße, Andreas
Hallo Andreas,

DuckDuckGo, Google, Bing und Co. alle kaputt?

https://www.herber.de/forum/archiv/1560t...ieren.html
https://www.excel-pratique.com/en/vba_tr...t-function
http://www.excel-ist-sexy.de/eindimensio...sortieren/

...

Ggf. musst Du das ganze noch an Deine Shapes anpassen oder nach den Infos in BildQuelle.
Hallo Andreas,

leider geht deine Frage im Code ein wenig unter....

Aber grundsätzlich sehe ich, dass deine Sortierreihenfolge nicht dem Standard entspricht, oder?
Ich würde den Text in zwei Teile teilen:
Bildnummer_sek_1 und -.jpg
Jetzt hast Du ein Array mit zwei Spalten und kannst dieses nach Spalte 1 aufsteigend und Spalte 2 absteigend sortieren.

Dazu gibt's Hilfe z.B bei
http://www.office-loesung.de/ftopic388695_0_0_asc.php
https://www.online-excel.de/excel/singsel_vba.php?f=97
Wobei wahrscheinlich der schlankeste Weg ist (wie von Slowboarder bemerkt):
Array in ein leeres Blatt schreiben, mit Bordmitteln sortieren und wieder in ein Array einlesen.

Gruß,
Lutz
Hallöchen,

das geht ja mit Sortieren nicht, da die Vorzeichen anders als gewollt bei einer Sortierreihenfolge gelagert sind.

Da Dein Array ansonsten aber bereits sortiert und hinsichtlich der Dateien paarig ist, könntest Du jeweils die beiden zusammengehörenden in einer Schleife tauschen. Schiebe den ersten Eintrag in eine Variable, hole dafür den zweiten vor und lege dann den Eintrag aus der variable an die zweite Stelle.

Ggf. prüfst Du zuvor, ob Deine Auswahl korrekt ist.
Hallo Michael,
Danke, nix kaputt.

Hallo Lutz,
Danke für den Hinweis.

Hallo André,
wird getestet, Danke

Grüße, Andreas (der nicht programmieren aber gut Quellcode lesen kann ;O) )
Code:
Sub M_snb()
  With Application.FileDialog(3)
      .AllowMultiSelect = True
      .InitialFileName = "G:\OF\*.jpg"
      If .Show Then
        With Sheet1.Shapes
          .AddPicture .SelectedItems(2), 0, -1, 20, 20, 100, 100
          .AddPicture .SelectedItems(1), 0, -1, 20, 120, 100, 100
          .AddPicture .SelectedItems(4), 0, -1, 20, 220, 100, 100
          .AddPicture .SelectedItems(3), 0, -1, 20, 320, 100, 100
          .AddPicture .SelectedItems(6), 0, -1, 20, 420, 100, 100
          .AddPicture .SelectedItems(5), 0, -1, 20, 520, 100, 100
        End With
    End If
  End With
End Sub