については、以下を参照してください。私にとっては、少なくとも;)
マルクス
OK、ので、ここで名前の変更ができない場合は、私が思いついたコードです:
Private Sub GetFiles(strFolder As String)
Dim DirArray() As Variant
ReDim Preserve DirArray(0 To 0) As Variant
Me.ListFiles.Clear
'---- Get the filenames into an array ----
Dim sFileName As String
sFileName = Dir$(strFolder)
Do While sFileName <> vbNullString
DirArray(UBound(DirArray)) = sFileName
sFileName = Dir$
If sFileName <> vbNullString Then
ReDim Preserve DirArray(0 To UBound(DirArray) + 1) As Variant
End If
Loop
'---- Sort the array ----
Dim i As Integer
Dim j As Integer
Dim CompareTemp1 As String
Dim CompareTemp2 As String
For i = LBound(DirArray) To UBound(DirArray)
For j = i To UBound(DirArray)
'---- Compare two neighbouring filename-numbers
'---- If the one lower in the list has a lower number, they'll be switched around ----
If GetNumbersFromFileName(CStr(DirArray(j))) < GetNumbersFromFileName(CStr(DirArray(i))) Then
'---- Change the neighbouring filenames order ----
CompareTemp1 = DirArray(i)
CompareTemp2 = DirArray(j)
DirArray(i) = CompareTemp2
DirArray(j) = CompareTemp1
End If
Next j
Next i
'---- Once all this is done, the DirArray should have the desired order, with the undesireables on top ----
'---- Display the new filename-order in your ListBox ----
For i = 0 To UBound(DirArray) - 1
'---- Display only filenames with (##) ----
If GetNumbersFromFileName(CStr(DirArray(i))) <> -1 Then
AddItems Me.ListFiles, (CStr(DirArray(i))), strFolder
End If
Next i
ReDim DirArray(0) As Variant
End Sub
Private Function GetNumbersFromFileName(sFileNameToCheck As String) As Integer
Dim iOpenBracketPosition As Integer
Dim iClosedBracketPosition As Integer
'---- Get the bracket-positions ----
iOpenBracketPosition = InStr(1, sFileNameToCheck, "(")
iClosedBracketPosition = InStr(1, sFileNameToCheck, ")")
'---- In case one of the brackets is missing, the file will be pushed to the top ----
If iOpenBracketPosition = 0 Or iClosedBracketPosition = 0 Then
GetNumbersFromFileName = -1
Exit Function
End If
'---- Return the Number in between the brackets ----
GetNumbersFromFileName = CInt(Mid$(sFileNameToCheck, iOpenBracketPosition + 1, iClosedBracketPosition - iOpenBracketPosition - 1))
End Function
希望いくつかの意味があります! 乾杯! マルクス
私はヒット一度のみ、(99)まで動作します
(10)の後にソートされます(100)、その後(11)等...私はむしろ、複数の接頭辞がないと思います私のファイル名に0を... – Malteaser6900
入手しました。いくつかのコードが完成しました。それは問題を解決するはずです。私は家で見通しがないので、今すぐテストすることはできません。私は明日あなたに戻ってきます! –
だから。コードはそこにあり、うまくいくはずです!それが役に立てば幸い。 –