Hallo Hajo Zi, hier ist das Makro:
Ich brauch das wie gesagt nur für das erste Tabellenblatt - dort funktioniert das Makro perfekt. In den anderen Tabellenblättern sind Ergebnissgrafiken und da kommt dann die ganze Zeit ein Laufzeitfehler 91:
Option Explicit
' Zelle A bis AZ markieren falls die Aktive Zelle in diesem Bereich
' alte Farbe wieder zurückstellen bei wechsel und schliessen
' farbveränderungen im markiertem Bereich werden nicht zurück gestellt, außer Rot
Private Sub Workbook_Activate()
On Error GoTo neu
If Application.CommandBars("Symbolleiste xyz").Visible = False Then
Application.CommandBars("Symbolleiste xyz").Visible = True
End If
Exit Sub
neu:
Workbook_Open
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Zurück
End Sub
Private Sub Workbook_Open()
ActiveSheet.ScrollArea = "$a$4:$i$100"
'=========================================================================================
'Mit dem nachfolgenden Code wird beim Öffnen der Datei eine Symbolleiste mit dem Namen
'"Symbolleiste xyz" erstellt. Sie in diesem Beispiel zwei Funktionen: Zeilenmarkierung
'ein- und usschalten und eine Taste ohne Funktion
'=========================================================================================
Dim cb As CommandBar
Dim CBC As CommandBarButton
Dim I%
On Error Resume Next
Set cb = Application.CommandBars.Add(Name:="Symbolleiste xyz", _
temporary:=True, Position:=msoBarTop)
On Error GoTo 0
If Application.CommandBars("Symbolleiste xyz").Visible = False Then
cb.Visible = True
'=========================================================================================
'Hier wird die Anzahl der Schaltflächen (hier also 2) eingetragen. Bei drei
'Schaltflächen müsste eine 3 eingetragen werden usw.
'=========================================================================================
For I = 1 To 2
Set CBC = cb.Controls.Add(Type:=msoControlButton)
With CBC
.Width = 50 ' Breite der Schalter
.Style = msoButtonCaption ' Text auf Schaltfläche
Select Case I
Case 1
.Caption = "Zeilenmarkierung An/Aus"
.OnAction = "Zeilenmarkierung_an_aus"
.TooltipText = "Taste drücken Zeilenmarkierung zu aktivieren oder zu deaktivieren"
Case 2
'=========================================================================================
'In .Caption = wird der Text, den die Schaltfläche anzeigen soll eingegeben
'=========================================================================================
.Caption = "Ohne Funktion"
'=========================================================================================
'In .OnAction = wird der Makroname, des Makro das ausgeführt werden soll, eingetragen.
'Hier ist es das Makro an_aus, zu finden in Modul3
'=========================================================================================
.OnAction = ""
'=========================================================================================
'In .TooltipText = wird der Text eingegeben, der erscheinen soll, wenn man die
'Schaltfläche mit der Maus berührt, also ein Kommentartext
'=========================================================================================
.TooltipText = "Hier steht ein Text"
'=========================================================================================
'Mit dieser Anweisung wird die Gruppierung (der kleine senkrechte Strich hinter der
'Schaltfläche) begonnen. Der Eintrag muss nicht geändert werden, es sei denn es soll
'keine Gruppierung erstellt werden. Dazu muss nur Text True in False geändert werden.
'=========================================================================================
.BeginGroup = True
End Select
End With
Next I
End If
'=========================================================================================
'Hier gibt man die Länge an, bis wo die Zeile markiert werden soll. In diesem Beispiel wird
'bis zur Spalte AZ markiert. Es muss aber vorher die selbe Zahl noch unter Module in das
'Modul1 dieselbe Zahl eingetragen werden.
'=========================================================================================
If ActiveCell.Column < 10 Then Auslesen
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
I = 0
On Error Resume Next
'=========================================================================================
'Mit dieser Anweisung wird beim Beenden der Datei die Symbolleiste xyz gelöscht und das
'Makro Zurück ausgeführt
'=========================================================================================
Application.CommandBars("Symbolleiste xyz").Delete
Zurück
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'=========================================================================================
'Makro Zurück wird ausgeführt
'=========================================================================================
Zurück
'=========================================================================================
'Es werden nur bestimmte Zeilen markiert und zwar Zeile 1 bis Zeile 65000. Hier muss auch
'die Zahl, die unter Modul1 eingegeben wurde eingetragen werden.
'=========================================================================================
If (ActiveCell.Row >= 1 And ActiveCell.Row <= 65000) Then
If ActiveCell.Column < 10 Then Auslesen
End If
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
'=========================================================================================
'Makro Zurück wird ausgeführt
'=========================================================================================
Zurück
'=========================================================================================
'Die Variable, die in dem Modul2 in dem Makro Zeilenmarkierung_an_aus deklariert wird,
'wird auf 0 gesetzt
'=========================================================================================
I = 0
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
'=========================================================================================
'Makro Zurück wird ausgeführt
'=========================================================================================
Zurück
'=========================================================================================
'Es werden nur bestimmte Zeilen markiert und zwar Zeile 1 bis Zeile 65000. Hier muss auch
'die Zahl, die unter Modul1 eingegeben wurde eingetragen werden.
'=========================================================================================
If (ActiveCell.Row >= 1 And ActiveCell.Row <= 65000) Then
If ActiveCell.Column < 10 Then Auslesen
End If
On Error GoTo neu
If Application.CommandBars("Symbolleiste xyz").Visible = False Then
Application.CommandBars("Symbolleiste xyz").Visible = True
End If
Exit Sub
neu:
Workbook_Open
End Sub
Sub Zurück()
If I = 0 Then