Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1244to1248
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro steuert Makro

Makro steuert Makro
Matthias
Hallo zusammen,
im Modul1 läuft als erstes Makro Sub Set_Year()
Bevor nun dieses Makro abläuft müssten jetzt in den Sheets 1-12 folgendes Makro aus geschaltet werden

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
und wenn das Sub Set_Year schliesen will müssen die Makros in den Sheets 1-12 wieder aktiviert _ werden. Sub Set_Year() 1-12 DEAKTIVIEREN = "

Private Sub Worksheet_Change(ByVal Target As Excel.Range)" 
Dim o As Long Dim Blatt As Object For o = 5 To Sheets.Count ActiveWorkbook.Sheets(o).Activate Call WochenFarbe Call WochenFarbe2 Call FarbeAuslesen Call FarbeAuslesen2 Call FarbeAuslesenF Next o Sheets("1").Visible = True Range("E3").Select Sheets("Inhalt").Visible = True Sheets("Inhalt").Select For Each Blatt In Sheets If Blatt.Name ActiveSheet.Name Then Blatt.Visible = False End If Next Blatt Calculate Sheets("Inhalt").Select Range("A1").Select 1-12 AKTIVIEREN = "

Private Sub Worksheet_Change(ByVal Target As Excel.Range)" 
End Sub Ich weis nicht wie ich das lösen soll, bitte um Hilfe
Grus Matthias

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro steuert Makro
06.01.2012 23:21:24
Josef

Hallo Matthias,
Sub Set_Year()
  Dim o As Long
  Dim Blatt As Object
  Dim lngCalc As Long
  
  On Error GoTo ErrExit
  
  With Application
    .ScreenUpdating = False
    .EnableEvents = False
    lngCalc = .Calculation
    .Calculation = xlCalculationManual
    .DisplayAlerts = False
  End With
  
  For o = 5 To Sheets.Count
    ActiveWorkbook.Sheets(o).Activate
    Call WochenFarbe
    Call WochenFarbe2
    Call FarbeAuslesen
    Call FarbeAuslesen2
    Call FarbeAuslesenF
  Next o
  
  Sheets("1").Visible = True
  Range("E3").Select
  Sheets("Inhalt").Visible = True
  
  For Each Blatt In Sheets
    If Blatt.Name <> ActiveSheet.Name Then
      Blatt.Visible = False
    End If
  Next Blatt
  
  Sheets("Inhalt").Select
  Range("A1").Select
  
  ErrExit:
  
  With Err
    If .Number <> 0 Then
      MsgBox "Fehler in Prozedur:" & vbTab & "Sub 'Set_Year'" & vbLf & String(40, "=") & vbLf & vbLf & _
        IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & "Fehlernummer:" & vbTab & _
        .Number & vbLf & vbLf & "Beschreibung:" & vbTab & .Description & vbLf, vbExclamation, "Fehler in Modul - Modul1"
      .Clear
    End If
  End With
  
  On Error GoTo 0
  
  With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = lngCalc
    .DisplayAlerts = True
  End With
End Sub



« Gruß Sepp »

Anzeige
@ Josef - bekomme Fehlermeldung
07.01.2012 00:02:26
Matthias
Text:
Hallo Josef,
vielen Dank vorab für deine Mühen, aber ich bekomme fehler 1004
Die Visible Eigenschaften des Worksheets Objekts können nicht festgelegt werden.
Bevor das Set_Year endet werden dort die Sheets alle ausgeblendet bis auf "Inhalt" liegt es daran..?
(bin noch am testen )
Matthias
AW: @ Josef - bekomme Fehlermeldung
07.01.2012 00:08:49
Josef

Hallo Matthias,
Probiere es so.
Sub Set_Year()
  Dim o As Long
  Dim Blatt As Object
  Dim lngCalc As Long
  
  On Error GoTo ErrExit
  
  With Application
    .ScreenUpdating = False
    .EnableEvents = False
    lngCalc = .Calculation
    .Calculation = xlCalculationManual
    .DisplayAlerts = False
  End With
  
  For o = 5 To Sheets.Count
    ActiveWorkbook.Sheets(o).Activate
    Call WochenFarbe
    Call WochenFarbe2
    Call FarbeAuslesen
    Call FarbeAuslesen2
    Call FarbeAuslesenF
  Next o
  
  Sheets("1").Visible = xlSheetVisible
  Range("E3").Select
  Sheets("Inhalt").Visible = xlSheetVisible
  
  For Each Blatt In Sheets
    If Blatt.Name <> "Inhalt" Then
      Blatt.Visible = xlSheetHidden
    End If
  Next Blatt
  
  Sheets("Inhalt").Select
  Range("A1").Select
  
  ErrExit:
  
  With Err
    If .Number <> 0 Then
      MsgBox "Fehler in Prozedur:" & vbTab & "Sub 'Set_Year'" & vbLf & String(40, "=") & vbLf & vbLf & _
        IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & "Fehlernummer:" & vbTab & _
        .Number & vbLf & vbLf & "Beschreibung:" & vbTab & .Description & vbLf, vbExclamation, "Fehler in Modul - Modul1"
      .Clear
    End If
  End With
  
  On Error GoTo 0
  
  With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = lngCalc
    .DisplayAlerts = True
  End With
End Sub



« Gruß Sepp »

Anzeige
AW: @ Josef - Nur Sheet 1 wird gefüllt
07.01.2012 00:23:01
Matthias
Die sheets werden nicht mehr durchlaufen , nur sheet 1 wird befüllt. (Nr5 Startblatt)
Eine Fehlermeldung kommt nicht die Prozedur läuft also durch.
For o = 5 To Sheets.Count
ActiveWorkbook.Sheets(o).Activate
Call Clear ' Makro löscht in Sheet 1-12 die füllbereiche
Call WochenFarbe
Call WochenFarbe2
Call FarbeAuslesen
Call FarbeAuslesen2
Call FarbeAuslesenF
Next o
Mache Morgen weiter - gute Nacht
07.01.2012 00:34:50
Matthias
Thx und Danke... Matthias
AW: @ Josef - Nur Sheet 1 wird gefüllt
07.01.2012 09:57:26
Josef

Hallo Matthias,
an diesem Teil hab ich aber nichts verändert!
Das liegt dann wohl eher an deinen Makros. Warum müssen die Tabellen den aktiviert werden? Das ist zu 99% unnötig und unproduktiv.

« Gruß Sepp »

Anzeige
AW: @ Josef - verstehe deinen Code ...
07.01.2012 20:23:11
Matthias
Hallo Josef,
..nicht! könntest du ihn mir mal in Schritten erklären.
Nochmal zurück zur Aufgabe, hier sollte ein Code entstehen, der:
Wärend das Makro "Set_Year" läuft , sollen die Makros in den Sheets 1-12 DEAKTIVIERT werden.
In den Sheets 1-12 steht immer dies gleiche Makro:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim rc As Range
Dim lx As Long
Dim bSet As Boolean
With Tabelle1
If Intersect(Target, Range("F15:AJ17,F21:AJ23,F27:AJ30,F35:AJ52,F57:AJ74,F79:AJ96")) Is  _
Nothing Then Exit Sub
For Each rc In Target.Cells
For lx = 5 To 32 Step 2
If rc.Value = Cells(3, lx).Value Then
rc.Interior.ColorIndex = Cells(3, lx).Interior.ColorIndex
rc.Font.ColorIndex = Cells(3, lx).Font.ColorIndex
rc.Font.Bold = Cells(3, lx).Font.Bold = True
rc.Font.Italic = Cells(3, lx).Font.Italic = True
bSet = True
End If
Next lx
If Not (bSet) Then rc.Interior.ColorIndex = xlNone
Next
End With
End Sub
Die 3 - Call Aufrufe im "Set_Year" makro - "Farbe Auslesen" Füllen die Bereiche "Target-im obigen Makro,
dadurch kommt es zur Überschneidung und es wird alles total langssam.
Hoffe so ist mein Anliegen besser erklärt,
Matthias
Anzeige
AW: @ Josef - verstehe deinen Code ...
07.01.2012 20:32:15
Josef

Hallo Matthias,
ich habe deinen Code nicht verändert sondern nur die Events, Berechnung, usw. "auf Eis gelegt" die Ereignisprozeduren in den Tabellen werden also nicht aufgerufen, so wie du es wolltest.
Kannst du nicht mal alle Codes zeigen, oder besser die Datei hochladen und beschreiben was, wann und warum geschehen soll.
PS.: Der With-Rahmen in deinem Worksheet_Change-Code ist nonsense!

« Gruß Sepp »

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige