Thema Datum  Von Nutzer Rating
Antwort
31.05.2017 08:27:13 FS
NotSolved
Blau Ratschläge Makros verschachteln
31.05.2017 10:01:40 Gast26244
NotSolved
31.05.2017 10:06:30 Gast40837
NotSolved
31.05.2017 11:24:29 Gast89947
NotSolved
01.06.2017 09:16:03 FS
NotSolved
01.06.2017 09:27:10 Gast94142
Solved

Ansicht des Beitrags:
Von:
Gast26244
Datum:
31.05.2017 10:01:40
Views:
606
Rating: Antwort:
  Ja
Thema:
Ratschläge Makros verschachteln

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.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
31.05.2017 08:27:13 FS
NotSolved
Blau Ratschläge Makros verschachteln
31.05.2017 10:01:40 Gast26244
NotSolved
31.05.2017 10:06:30 Gast40837
NotSolved
31.05.2017 11:24:29 Gast89947
NotSolved
01.06.2017 09:16:03 FS
NotSolved
01.06.2017 09:27:10 Gast94142
Solved