Application.GetOpenFilename
#1
Hallo an alle.

Irgendwie stehe ich auf dem Schlauch.

CB = Angebot_Durchsuchen
Textfeld = txt_Angebot

Situation:

Wenn txt_Angebot leen dann
Code:
Dim fileToOpen As String
fileToOpen = Application.GetOpenFilename("Angebot (*.pdf),*.pdf")
txt_Angebot = fileToOpen
If txt_Angebot = False Then
txt_Angebot = ""
End If

Wenn txt_Angebot nicht leer dann vorher Abfrage
Code:
If MsgBox("Es wurde bereits ein Angebot gespeichert!" & Chr(13) & Chr(13) & "Wenn dieses geändert wird, wird die alte Datei gelöscht und neu erstellt." & Chr(13) & Chr(13) & "Soll die Änderung durchgeführt werden?", vbYesNo + vbQuestion, _
"Daten ändern?") = vbYes Then

Nur wie kombiniere ich das jetzt?


Wenn ich es so mache kommt Mehrfachdeklarationsfehler:
Code:
Private Sub Angebot_Durchsuchen_Click()

If txt_Angebot <> "" Then

If MsgBox("Es wurde bereits ein Angebot gespeichert!" & Chr(13) & Chr(13) & "Wenn dieses geändert wird, wird die alte Datei gelöscht und neu erstellt." & Chr(13) & Chr(13) & "Soll die Änderung durchgeführt werden?", vbYesNo + vbQuestion, _
"Daten ändern?") = vbYes Then

Dim fileToOpen As String
fileToOpen = Application.GetOpenFilename("Angebot (*.pdf),*.pdf")
txt_Angebot = fileToOpen
If txt_Angebot = False Then
txt_Angebot = ""
End If

Else

Dim fileToOpen As String
fileToOpen = Application.GetOpenFilename("Angebot (*.pdf),*.pdf")
txt_Angebot = fileToOpen
If txt_Angebot = False Then
txt_Angebot = ""
End If

End If

End Sub

Versuch 2:

Lösung:
Code:
Private Sub Angebot_Durchsuchen_Click()

If txt_Angebot <> "" Then

If MsgBox("Es wurde bereits ein Angebot gespeichert!" & Chr(13) & Chr(13) & "Wenn dieses geändert wird, wird die alte Datei gelöscht und neu erstellt." & Chr(13) & Chr(13) & "Soll die Änderung durchgeführt werden?", vbYesNo + vbQuestion, _
"Daten ändern?") = vbYes Then

else
Exit Sub
End If

End If

Dim fileToOpen As String
fileToOpen = Application.GetOpenFilename("Angebot (*.pdf),*.pdf")
txt_Angebot = fileToOpen
If txt_Angebot = False Then
txt_Angebot = ""
End If

End Sub

Wenn txt_Angebot jetzt Wert hat kommt die Msgbox.
Ja bestätigen kommt OpenFilename.
Klick ich dann aber Abbrechen setzt er ja txt_Angebot auf leer.
Hier müsste der alte wert dann bestehen bleiben.
Antworten Top
#2
Hier die Lösung!

Code:
Private Sub Angebot_Durchsuchen_Click()

If txt_Angebot <> "" Then

If MsgBox("Es wurde bereits ein Angebot gespeichert!" & Chr(13) & Chr(13) & "Wenn dieses geändert wird, wird die alte Datei gelöscht und neu erstellt." & Chr(13) & Chr(13) & "Soll die Änderung durchgeführt werden?", vbYesNo + vbQuestion, _
"Daten ändern?") = vbYes Then

Else
Exit Sub
End If

End If

Dim fileToOpen As String
fileToOpen = Application.GetOpenFilename("Angebot (*.pdf),*.pdf", Title:="Angebot auswählen")

If fileToOpen = "Falsch" Then Exit Sub

txt_Angebot = fileToOpen

End Sub
Antworten Top
#3
Hi Andyle,

das mag zwar funktionieren, aber es sind einige Stolperfallen drin, die bei einer späteren Änderung Schwierigkeiten bereiten können.
Du verletzt einige Programmierempfehlungen:
  • alle Variablen sollten am Anfang deklariert werde
  • man sollte kein "exit sub" verwenden
  • zur besseren Übersicht sollte man Einrückungen statt Leerzeilen verwenden
  • überlange Zeilen sollte man vermeiden
  • statt Chr(13) sollte man besser vbCr verwenden

Ich würde es so schreiben:
Code:
Private Sub Angebot_Durchsuchen_Click()
Dim fileToOpen As String
If txt_Angebot <> "" Then
    If MsgBox("Es wurde bereits ein Angebot gespeichert!" & vbCr & vbCr & _
              "Wenn dieses geändert wird, wird die alte Datei gelöscht und neu erstellt." & vbCr & vbCr & _
              "Soll die Änderung durchgeführt werden?", _
              vbYesNo + vbQuestion, _
              "Daten ändern?") _
              = vbYes Then
        fileToOpen = Application.GetOpenFilename("Angebot (*.pdf),*.pdf", Title:="Angebot auswählen")
        If fileToOpen <> False Then txt_Angebot = fileToOpen
    End If
End If
End Sub
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#4
Oder

Code:
Sub M_snb()
    If Dir("D:\*.pdf") <> "" Then b00 = MsgBox(Dir("D:\*.pdf"), vbYesNo, "Replace ?")
    If Dir("D:\*.pdf") = "" Or b00 = 6 Then ThisWorkbook.ExportAsFixedFormat 0, "beispiel"
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