Code funktioniert nicht wenn Label bereits befüllt

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm Label TextBox
Bild

Betrifft: Code funktioniert nicht wenn Label bereits befüllt
von: Christian
Geschrieben am: 12.08.2015 13:59:03

Hallo zusammen,
mit Hilfe eines Buttons rufe ich diesen Code auf:

Sub DateiAuswahl(strTB As String)
   Dim strDatei As String
   Dim fdDialog As FileDialog
   Set fdDialog = Application.FileDialog(msoFileDialogFilePicker)
   With fdDialog
      .Filters.Add "Dateien", "*.xlsx; *.xlsm; *.xls; *.pdf; *.HLW; *.doc", 1
      .InitialFileName = "P:\Auftragserstellung\Etiketten" '"I:\Z_Test\"
      .Title = "Bitte Datei auswählen"
      .AllowMultiSelect = False         '<== Achtung!! kein Multiselect
      .ButtonName = "Auswahl"
      If .Show = -1 Then
         strDatei = .SelectedItems(1)
      End If
   End With
   If strDatei <> "" Then UserForm1.Controls(strTB) = strDatei
   Set fdDialog = Nothing
End Sub

Den Hyperlink trage ich dann in ein Label ein. Der Code funktioniert solange das Label zu beginn leer war. Wenn ich den Hyperlink aber mit diesem Code ändern möchte, dann funktioniert der Code nicht mehr.
Kann mir jm helfen um den Code anzupassen?
Danke

Bild

Betrifft: AW: Code funktioniert nicht wenn Label bereits befüllt
von: selli
Geschrieben am: 12.08.2015 15:18:10
hallo christian,
wann bekommt denn deine variable strTB (vermutlich eine Textbox) seinen wert (string) zugewiesen?
gruß
selli

Bild

Betrifft: AW: Code funktioniert nicht wenn Label bereits vol
von: Christian
Geschrieben am: 12.08.2015 15:30:34
Das ist eine sehr gute Frage.
Die kann ich leider nicht beantworten.
Ich rufe den Code so auf:

Private Sub CB_KartonEtikett_Click()
    DateiAuswahl "Lbl_KartonEtikett"
End Sub
Ich habe den Code jetzt so umgebaut:
Private Sub CB_KartonEtikett_Click()
Lbl_KartonEtikett.Caption = ""
    DateiAuswahl "Lbl_KartonEtikett"
End Sub
Jetzt wird das Label erst geleert und dann neu beschriftet.
Ich hoffe das meine Idee eine gute und fehlerfrei ist.
Für Tipps bin ich dankbar.
Danke

Bild

Betrifft: AW: Code funktioniert nicht wenn Label bereits vol
von: selli
Geschrieben am: 12.08.2015 15:45:26
hallo christian,
na, da wird doch die variable vergeben.
ist das das einzige label, das so beschriftet wird?
wenn ja, würde ich das so machen:

Private Sub CB_KartonEtikett_Click()
    DateiAuswahl
End Sub
Sub DateiAuswahl()
Dim strDatei As String
Dim fdDialog As FileDialog
Set fdDialog = Application.FileDialog(msoFileDialogFilePicker)
With fdDialog
.Filters.Add "Dateien", "*.xlsx; *.xlsm; *.xls; *.pdf; *.HLW; *.doc", 1
.InitialFileName = "P:\Auftragserstellung\Etiketten" '"I:\Z_Test\"
.Title = "Bitte Datei auswählen"
.AllowMultiSelect = False '<== Achtung!! kein Multiselect
.ButtonName = "Auswahl"
If .Show = -1 Then
strDatei = .SelectedItems(1)
End If
End With
If strDatei <> "" Then UserForm1.Lbl_KartonEtikett.Caption = strDatei
Set fdDialog = Nothing
End Sub
gruß
selli

Bild

Betrifft: AW: Code funktioniert nicht wenn Label bereits vol
von: Christian
Geschrieben am: 12.08.2015 15:47:18
Danke.
Es sind 2 Label die beschriftet werden.

Bild

Betrifft: AW: Code funktioniert nicht wenn Label bereits vol
von: selli
Geschrieben am: 12.08.2015 15:55:58
hallo
dann ändere mal nur diese zeile
If strDatei <> "" Then UserForm1.Controls(strTB) = strDatei
in
If strDatei <> "" Then UserForm1.Controls(strTB).Caption = strDatei
bin aber nicht hundert prozent sicher, ob das geht, weil ein controls mittels variable angesprochen wird.
versuch macht kluch.
gruß
selli

Bild

Betrifft: AW: Code funktioniert nicht wenn Label bereits vol
von: Christian
Geschrieben am: 13.08.2015 07:05:38
Hallo Selli,
vielen Dank für deine Hilfe.
Es hat funktioniert.
Danke

Bild

Betrifft: AW: Code funktioniert nicht wenn Label bereits vol
von: Christian
Geschrieben am: 12.08.2015 15:46:18
Das ist eine sehr gute Frage.
Die kann ich leider nicht beantworten.
Ich rufe den Code so auf:

Private Sub CB_KartonEtikett_Click()
    DateiAuswahl "Lbl_KartonEtikett"
End Sub
Ich habe den Code jetzt so umgebaut:
Private Sub CB_KartonEtikett_Click()
Lbl_KartonEtikett.Caption = ""
    DateiAuswahl "Lbl_KartonEtikett"
End Sub
Jetzt wird das Label erst geleert und dann neu beschriftet.
Ich hoffe das meine Idee eine gute und fehlerfrei ist.
Für Tipps bin ich dankbar.
Danke

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Code funktioniert nicht wenn Label bereits befüllt"