Moin! Hier mal eine Variante mit Klassen. Da brauchst du nicht jedem Button einen extra Code zuweisen mit der Nummer. Betrifft jetzt aber jeden Button auf dem Blatt. Könnte man noch anpassen. Alternative wäre den Code in ein Modul auslagern und dann für jeden Button eine Codezeile schireben, in welchem man die NUmmer übergibt. VG
in Diese Arbeitsmappe das hier:
Private Sub Workbook_Open()
Call einbinden
End Sub
in ein Modul das:
Option Explicit
Public buttons() As New meineButton
Sub einbinden()
Dim i As Long
Dim schalter As OLEObject
For Each schalter In ActiveSheet.OLEObjects
i = i + 1
ReDim Preserve buttons(i)
Set buttons(i).clsButton = schalter.Object
Next schalter
End Sub
Private Function WkbExists(sFile As String) As Boolean
Dim wkb As Object
On Error Resume Next
Set wkb = Workbooks(sFile)
If Not wkb Is Nothing Then
WkbExists = True
End If
On Error GoTo 0
End Function
Sub dateien_oeffnen(zahl As Long)
Dim oTargetBook As Object
Dim Datei As String
Dim Name As String
Set oTargetBook = ActiveWorkbook
MsgBox zahl
Exit Sub
Datei = oTargetBook.Sheets("Programmdeckblatt").Range("C" & (54 + zahl)).Value
Name = oTargetBook.Sheets("Programmdeckblatt").Range("B" & (54 + zahl)).Value
If WkbExists(Name) = False Then '=Prüfung ob Datei geöffnet -> siehe unten
If oTargetBook.Sheets("Programmdeckblatt").Range("A" & (54 + zahl)).Value > 0 Then '=Prüfung ob Pfad vorhanden
Workbooks.Open Datei
End If
Else
Workbooks(Name).Activate
End If
End Sub
und dann noch ein Klassenmodul anlegen und in - meineButton - umbenennen. Dort den Code rein.
Option Explicit
Public WithEvents clsButton As MSForms.CommandButton
Private Sub clsButton_Click()
Dim Name As String
Dim position As Long
Name = clsButton.Caption
position = Replace(Name, "Proo", "")
Call dateien_oeffnen(position)
End Sub
Die Datei mal speichern, schließen und öffnen. Beim Start werden dann alle Buttons mit der Klasse verknüpft. Beim Anklicken der Buttons, wird der Name aus der Anzeige der Buttons genommen und die Nummer extrahiert. Diese wird dann an dein leicht verändertes Modul übergeben. Damit öffnet sich dann die Datei.
|