VBA-CommandButton funktioniert nicht richtig
Marko
ich habe aus meinen früherem Aufgabengebiet noch eine Datei mit einem ganzen Sack voll Makros drin. Die meisten benötige ich jetzt nicht mehr - aber mindestens eines ist dabei, dass ich gern wieder nutzen würde.
Das Makro blendet ein Fenster ein und listet darin alle Tabellenblätter der aktuellen Arbeitsmappe auf. Durch markieren oder de-markieren werden diese dann ein- bzw. ausgeblendet.
Um jetzt meine PERSONL.XLS nicht zu riesig werden zu lassen, wollte ich nur dieses eine Makro aus der alten Datei rauskopieren und da einfügen.
Das Makro sieht erstmal so aus: (kommt original übrigens von einem französischen Rechner mit Excel2003)
Sub Tabellenblätter_ein-/ausblenden()
Dim myfeu() As Boolean
Dim nomfeu As String
Dim nbfeu, cptfeu As Integer
nbfeu = ActiveWorkbook.Sheets().Count
ReDim myfeu(nbfeu)
ReDim clussel(nbfeu, 2)
cptfeu = 1
'-----------------------------dialogue
Load selwin
selwin.Caption = "Hide/Unhide sheets"
selwin.listwin.MultiSelect = fmMultiSelectMulti
For Each c In ActiveWorkbook.Sheets()
selwin.listwin.AddItem c.Name
myfeu(cptfeu - 1) = False
If Not c.Visible Then myfeu(cptfeu - 1) = True
cptfeu = cptfeu + 1
Next c
For cptfeu = 1 To nbfeu
selwin.listwin.Selected(cptfeu - 1) = myfeu(cptfeu - 1)
Next cptfeu
selwin.Show
'-----------------------------traitement
If clussel(0, 0) = "ZZZ" Then GoTo finaffichefeu
Application.ScreenUpdating = False
For cptfeu = 1 To nbfeu
nomfeu = clussel(cptfeu - 1, 0)
ActiveWorkbook.Sheets(nomfeu).Visible = True
If clussel(cptfeu - 1, 1) = 1 Then ActiveWorkbook.Sheets(nomfeu).Visible = False
Next cptfeu
finaffichefeu: Application.ScreenUpdating = True
End Sub
Unter "Formulare" gibt's dann das "selwin" mit folgendem Code:
Private Sub CommandButton1_Click()
For cptlig = 1 To selwin.listwin.ListCount
clussel(cptlig - 1, 0) = selwin.listwin.List(cptlig - 1)
clussel(cptlig - 1, 1) = 0
If selwin.listwin.Selected(cptlig - 1) Then clussel(cptlig - 1, 1) = 1
Next cptlig
Unload selwin
End Sub
Private Sub CommandButton2_Click()
clussel(0, 0) = "ZZZ"
Unload selwin
End Sub
Private Sub CommandButton3_Click()
a = selwin.listwin.Selected(0)
For cptlig = 1 To selwin.listwin.ListCount
If a Then selwin.listwin.Selected(cptlig - 1) = False _
Else selwin.listwin.Selected(cptlig - 1) = True
Next cptlig
End Sub
Ich steh jetzt vor dem Problem, dass ich zwar das Fenster angezeigt bekomme, dort auch sämtliche Tabellenblätter aufgelistet und an-/abwählbar sind - aber beim Klicken auf "Ok", "All" oder "Cancel" kommt 'ne Fehlermeldung:"Fehler beim Kompilieren:
Sub oder Function nicht definiert"
Und ich hab keinen Plan warum... Schätze, ich muss noch irgendeinen Part aus der alten Datei rüberkopieren - weiß nur nicht wonach ich suchen soll...
Vielen Dank falls jemand eine Idee hat und mich mit seinem Wissen überhäuft ;-)
Gruß
Marko