Hej Maxzpad
hermed koden:
--------------------------
Function filedialog1(Label_box As String, Return_type As Byte, Dialog_filter As String, Start_position As String) As String
' Label_box er overskriften p? dialogboksen
' Return_type er dialog type vi ?nsker
' Dialog_filter er det filter vi s?tter op
' Start_position er vores mappe vi ?nsker at starte i
' koden her sender blot variablen tilbage - uanset om du v?lger case 1, 2, 3 eller 4
Dim MSO As Object ' styre filedialog type
Dim svar As String ' h?ndtere svar fra filedialogen
' vi s?ger blot at omdanne indholdet, skrives i sm? bogstaver
' s? vi ikke l?ngere nede f?r en fejl.
Dialog_filter = LCase(Dialog_filter)
' set dialog type
Select Case Return_type
Case 3
Set MSO = Application.filedialog(msoFileDialogOpen)
End Select
With MSO
' Der kan kun hentes en file af gangen
.AllowMultiSelect = False
If Return_type = 2 Or Return_type = 4 Then
Debug.Print "---"
Else
'------------------------------------------------
' I denne blog s?ttes filterne op i dialogboksen.
'------------------------------------------------
'Nulsting af filteret
.Filters.Clear
'---------------------------------------
'Filetyper til filteret
'---------------------------------------
' Excel
If InStr(1, Dialog_filter, "excel") <> 0 Then
.Filters.Add "Excel files", "*.xls;*.xlsb;*.xlsm;*.xlsx;*.xlt;*.xltm;*.xltx;*.xlw;*.xml;*.xps;*.xla;*.xlam"
End If
'Vi s?tter filteret til standart i boksen
.FilterIndex = 1
End If
'Start position hentes fra subrutinen
.InitialFileName = Start_position
'Titlen hentes fra subrutinen.
.Title = Label_box
'Kaster svaret fra dialogboksen ind i "svar" variablen. Er der trykket p? annulere, er svaret "Empty"
If .Show = "-1" Then
svar = .SelectedItems(1)
Else
svar = "Empty"
End If
End With
' Her overf?res svaret fra dialogboksen til funktionen. Er "svar" tomt f?r de ogs? et tomt svar.
If svar <> "" Then
filedialog1 = svar
End If
End Function
------------------------
her er de variabler som i brug når funktionen trækkes.
Mvh.
Martin