Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Array sortieren?
#1
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
Antworten Top
#2
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.
Gruß
Michael
Antworten Top
#3
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
Antworten Top
#4
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.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
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) )
Antworten Top
#6
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
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste