Excel 2003 Makrozuordnung zu Button

Leola13

Erfahrenes Mitglied
Hai,

folgende Ausgangssituation :

Eine Exceldatei, mit drei Tabellenblätter, jedes Tabellenblatt hat zwei Button mit dazugehörigen Makros.

Nun liegen die Makros (im Editor) im jeweiligen Tabellenblatt sind aber gleich.
D.h. auf Tabellenblatt 1 gibt es einen Button mit zugehörigem Makro, welches Zeilen ausblendet.
auf Tabellenblatt 2 gibt es einen Button mit zugehörigem Makro, welches Zeilen ausblendet.
... usw.

Nun will ich die gleichen Makros der einzelnen Tabellenbätter im Modul zusammenfassen, damit die Änderungen nur einmal und nicht pro Tabellenblatt gemacht werden müssen.

Geht das ?

Wenn, ja : Wie ?

Fragt nicht, wie ich zu dieser Konstellation gekommen bin.

Danke.

Ciao Stefan
 
Kannst du mal das Makro (welches ja in allen Blättern gleich sein soll) hier rein posten?

Ich verstehe die Aufgabenstellung nämlich nicht so ganz.
 
Jepp. geht.
Benne sie eindeutig (Sollte eigentlich schon sein, da ja der Button-Name in der Methode drin steckt.
Also wenn bisher jedes Knopf-Makro 'Knopf1' hiess, dann sollte es nachher 'sheet1_knop1' heissen.
Anschliessend die Knöpfe neu verlinken - fertig.

Wenn du sauber arbeiten willst, dann ziehst du noch alle Gemeinsamkeiten aller Knopf1-Makros in eine eigene Funktion. und machst ggf. nur den Aufruf getrennt

Visual Basic:
Sub Button2_Click()
    Call tuWas(ActiveSheet.Cells(1, 1).Value)
End Sub

Sub Button3_Click()
    Call tuWas(ActiveSheet.Cells(4, 5).Value)
End Sub

Sub tuWas(ByVal iText As String)
    MsgBox iText
End Sub
 
Hai,

Visual Basic:
Private Sub Archiv_Click()
    
    ActiveCell.Rows("1:1").EntireRow.Select

    Selection.Cut
    Sheets("Alt").Rows("3:3").Insert
    Selection.Delete Shift:=xlUp
    ActiveCell.Select
    ActiveSheet.Range("e3").Copy Destination:=Worksheets("Alt").Range("A3")
    
End Sub

Private Sub ToggleButton1_Click()
If ToggleButton1.Value = True Then
    ToggleButton1.Caption = "X Einblenden"
     Zeilen_ausblenden
End If

If ToggleButton1.Value = False Then
   ToggleButton1.Caption = "X Ausblenden"
     Zellen_einblenden
End If
End Sub


Sub Zellen_einblenden()
    ActiveSheet.UsedRange.Rows.Hidden = False
End Sub


Sub Zeilen_ausblenden()
Application.ScreenUpdating = False

Dim Zelle As Range

For Each Zelle In Range("A6", "A" & Range("a65536").End(xlUp).Row)
    
    If Zelle = "X" Then
      Zelle.EntireRow.Hidden = True
    Else
      Zelle.EntireRow.Hidden = False
    End If
Next Zelle

Application.ScreenUpdating = True


End Sub

Diese(s) Makro wird über zwei Button gestartet. Einmal für Archiv und einmal für Ein-/Ausblenden.

... aber das Ganze habe ich 3 mal auf jedem Tabelenblatt die zwei Button und im Editor für jedes Tabellenblat die/das Makro(s).

Ciao Stefan
 
Zuletzt bearbeitet von einem Moderator:
Ich glaube eher, dass Stefan nach einer Lösung sucht, mit nur einem Click auf Button auf Blatt 1, die Makros für alle 3 Tabellenblätter auszuführen, also dass er eben nicht sich durch die Blätter hangeln muss
 
@Leola
Bitte die VB-Codes in Zukunft selber in VB-Tags setzen. Es ist einfach viel lesbarer als mit PHP-Tags:
[code=vb]Dein Code[/code]

@Zvoni
Nunja, bei meinem Beispiel ist alles in einem Modul. activsheet() basiert automatisch auf das Sheet wo der Button gedrückt wird. Ergo kann man mit dem Arbeiten
 
Yaslaw,

ich habe ja gar nicht behauptet, dass man mit deinem Code nicht arbeiten könnte *gg*

Ich denke nur nicht, dass es das ist was Stefan sucht
 
Hai,

man was seid ihr schnell mit den Antworten.

@Zvoni : Nein. Ein Button auf Blatt 1 und es soll nur auf Blatt 1 ausgeführt werden.

Nur die drei Makros für die einzelnen Tabellenblätter sind ja gleich im Aufbau.



Mein Ansatz war alles von einem Tabellenblatt kopieren und in Modul 1 einfügen (im Editor) und dann die Button dahin verlinken.

@Yaslaw : Ich denke so sollte es sein. Nur wie mach ich das ?

Von Knop1 auf Sheet1_Knop1 ?

Ciao Stefan
 
Als Beispiel (ich weiss halt nicht genau, was alles Konstant sein soll
Visual Basic:
'Button von Sheet 1
Private Sub Archiv_sheet1_Click()
    Call archiv("Alt", 3)
End Sub

'Button von Sheet 2
Private Sub Archiv_sheet2_Click()
    Call archiv("Alt", 15)
End Sub

'Allgemeine Archiv-Funktion
'ActiveCell und ActiveSheet zsollten automatisch auf das richtige Sheet/Zelle zeigen
Private Sub archiv(ByVal iDestSheetName As String, ByVal iDestRow As Long)
    ActiveCell.Rows("1:1").EntireRow.Select
 
    Selection.Cut
    Sheets(iDestSheetName).Rows(iDestRow & ":" & iDestRow).Insert
    Selection.Delete Shift:=xlUp
    ActiveCell.Select
    ActiveSheet.Range("e3").Copy Destination:=Worksheets(iDestSheetName).Range("A" & iDestRow)
End Sub
 
Hai,

Als Beispiel (ich weiss halt nicht genau, was alles Konstant sein soll

Ich auch nicht, weil das aus anderen Makros zusammengestückelt ist. (..aber ich arbeite dran. Anfänger halt.)

Das heisst dies :
Visual Basic:
'Button von Sheet 1
Private Sub Archiv_sheet1_Click()
    Call archiv("Alt", 3)
End Sub

ist der Tabelenbezogene Aufruf für das eigentliche Makro ?!.

Das probiere ich mal aus.

Ciao Stefan
 
Zurück