tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
803
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Jan 2003
    Ort
    tiefstes Ostwestfalen
    Beiträge
    2.606
    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
     
    Eine weitere sinnlose Page im weltweiten Netz. www.leola13.de
    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen !
    Man sollte die Tatsachen kennen, bevor man sie verdreht !

  2. #2
    Zvoni Zvoni ist offline Mitglied Platin
    Registriert seit
    Jul 2008
    Ort
    Hinter dem Mond gleich links
    Beiträge
    735
    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.
     
    Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein

    Code vb:
    1
    
    If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")

  3. #3
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    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

    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    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
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  4. #4
    Registriert seit
    Jan 2003
    Ort
    tiefstes Ostwestfalen
    Beiträge
    2.606
    Hai,

    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    
    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
    Geändert von Yaslaw (25.01.12 um 14:35 Uhr) Grund: PHP-Tags durch VB-Tags ersetzt
     
    Eine weitere sinnlose Page im weltweiten Netz. www.leola13.de
    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen !
    Man sollte die Tatsachen kennen, bevor man sie verdreht !

  5. #5
    Zvoni Zvoni ist offline Mitglied Platin
    Registriert seit
    Jul 2008
    Ort
    Hinter dem Mond gleich links
    Beiträge
    735
    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
     
    Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein

    Code vb:
    1
    
    If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")

  6. #6
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    @Leola
    Bitte die VB-Codes in Zukunft selber in VB-Tags setzen. Es ist einfach viel lesbarer als mit PHP-Tags:
    [VB]Dein Code[/VB]

    @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
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  7. #7
    Zvoni Zvoni ist offline Mitglied Platin
    Registriert seit
    Jul 2008
    Ort
    Hinter dem Mond gleich links
    Beiträge
    735
    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
     
    Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein

    Code vb:
    1
    
    If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")

  8. #8
    Registriert seit
    Jan 2003
    Ort
    tiefstes Ostwestfalen
    Beiträge
    2.606
    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
     
    Eine weitere sinnlose Page im weltweiten Netz. www.leola13.de
    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen !
    Man sollte die Tatsachen kennen, bevor man sie verdreht !

  9. #9
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Als Beispiel (ich weiss halt nicht genau, was alles Konstant sein soll
    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    '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
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  10. #10
    Registriert seit
    Jan 2003
    Ort
    tiefstes Ostwestfalen
    Beiträge
    2.606
    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 :
    Code vb:
    1
    2
    3
    4
    
    '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
     
    Eine weitere sinnlose Page im weltweiten Netz. www.leola13.de
    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen !
    Man sollte die Tatsachen kennen, bevor man sie verdreht !

  11. #11
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Zitat Zitat von Leola13 Beitrag anzeigen
    Das heisst dies :
    Code vb:
    1
    2
    3
    4
    
    'Button von Sheet 1
    Private Sub Archiv_sheet1_Click()
        Call archiv("Alt", 3)
    End Sub

    ist der Tabelenbezogene Aufruf für das eigentliche Makro ?!.
    Genau. Dem Button kannst du nur ein Event-Sub (ButtonName_Click()) hinterlegen. Das kann aber in einem Modul sein, also alle Event-Subs zu allen Buttons in einem einzigen Modul.
    In diesem Event-Sub musst du die allgemeine Funktion aufrufen und die Spezifischen Angaben mitgeben.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  12. #12
    Registriert seit
    Jan 2003
    Ort
    tiefstes Ostwestfalen
    Beiträge
    2.606
    Hai,

    Nachtrag zu den Konstanten :

    Es wird immer in Sheet "Alt" eingefügt
    immer ab Reihe 3
    und es wird immer der Wert von e3 kopiert.

    Ciao Stefan
     
    Eine weitere sinnlose Page im weltweiten Netz. www.leola13.de
    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen !
    Man sollte die Tatsachen kennen, bevor man sie verdreht !

Ähnliche Themen

  1. » Excel [Excel 2003] 2007er Skript funktioniert unter 2003er Excel nicht
    Von DarthShader im Forum Office-Anwendungen
    Antworten: 1
    Letzter Beitrag: 24.08.10, 12:18
  2. Excel 97 VB Makro hat Laufzeitfehler unter Excel 2003
    Von V&M im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 23.07.08, 11:16
  3. Problem mit Excel 97 Makros unter Excel 2003
    Von V&M im Forum Office-Anwendungen
    Antworten: 1
    Letzter Beitrag: 23.07.08, 11:15
  4. Antworten: 1
    Letzter Beitrag: 18.07.08, 13:46
  5. Excel 2007 + Makro + rauschreiben als Excel 1997 - 2003
    Von Herli im Forum Office-Anwendungen
    Antworten: 2
    Letzter Beitrag: 10.08.07, 11:09