Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1112to1116
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 Ein/Ausschalten

Makro Ein/Ausschalten
Dustin
Hallo zusammen,
ich hab im Netz dieses Makro gefunden, welches genau das tut was ich gerne möchte:
Dim lastcell As Range
Dim farbe As Integer
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
On Error Resume Next
lastcell.Interior.ColorIndex = farbe
farbe = Target.Interior.ColorIndex
Target.Interior.ColorIndex = 6
Set lastcell = Target
End Sub

Nun muss ich aber dieses Makro jedesmal, wenn ich es nutzen möchte, in das aktive Workbook rein kopieren.
Gibt es eventuell die Möglichkeit, dieses Makro in die Persönliche Arbeitsmappe zu legen und es über ein zusätzliches Makro bei Bedarf Ein oder Aus zu schalten?
Wäre Klasse wenn mir jemand helfen könnte.
Viele Grüße
Dustin

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro Ein/Ausschalten
09.11.2009 15:41:17
Nepumuk
Hallo,
dir ist aber schon klar, dass wenn das Ding aktiv ist, du in der Mappe nicht mehr kopieren kannst. Außerdem bleibt die Farbe der Zelle nach dem speichern erhalten und du musst die Zelle manuell umfärben.
Das, was du willst geht nur über eine Klasse in einem Addin / deiner Makroarbeitsmappe.
Gruß
Nepumuk
AW: Makro Ein/Ausschalten
10.11.2009 09:09:12
Dustin
Hallo Nepumuk,
Ich hab mich dann doch ran getraut und es in meine PERSONL.XLS eingearbeitet.
Ich habs sogar geschafft, den Aufruf über mein eigenes Makro Menü zu realisieren.
Vielen Vielen Dank für das Makro, klappt bestens.
Viele Grüße
Dustin
Anzeige
AW: Makro Ein/Ausschalten
09.11.2009 16:00:24
David
Hallo Dustin,
wenn du dies in die personl.xls legen würdest, würdest du ja nur das Change-Ereignis DIESER Datei abfragen und nicht der Datei, in der du arbeiten möchtest. Somit wäre das Makro dann dort sinnlos.
Makros, die bei bestimmten Ereignissen einer Arbeitsmappe ablaufen sollen, können auch nur in dieser Arbeitsmappe existieren.
Eine Möglichkeit wäre evtl., diesen Code durch ein Makro in der personl.xls in die entsprechende Zieltabelle kopieren zu lassen, aber ob das der Sinn der Sache ist?
Auf jeden Fall übersteigt das MEINE VBA-Kenntnisse.
Gruß
David
AW: Makro Ein/Ausschalten
09.11.2009 17:25:00
Nepumuk
Hallo,
mal ein Beispiel wie so etwas geht:
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call Terminate_Class
    Call Delete_Buttons
End Sub

Private Sub Workbook_Open()
    Call Initialize_Class
    Call Create_Buttons
End Sub

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit
Option Private Module

Private Const COMMANDBARBUTTON_TAG = "Schalter"

Private lobjApplication As clsApplication
Private lobjCommandbarButton(1 To 2) As CommandBarButton

Public Sub Initialize_Class()
    Set lobjApplication = New clsApplication
    Set lobjApplication.Set_Application = Application
End Sub

Public Sub Terminate_Class()
    Set lobjApplication = Nothing
End Sub

Public Sub Create_Buttons()
    Dim intIndex As Integer
    Call Delete_Buttons
    For intIndex = 1 To 2
        Set lobjCommandbarButton(intIndex) = CommandBars(intIndex). _
            Controls.Add(Type:=msoControlButton, Temporary:=True)
        With lobjCommandbarButton(intIndex)
            .Caption = "Ein"
            .OnAction = "Switch_ActiveCell_Color"
            .TooltipText = "Ein- und Ausschalten der automatischen Hervorhebung"
            .Style = msoButtonCaption
            .Tag = COMMANDBARBUTTON_TAG
        End With
    Next
End Sub

Public Sub Delete_Buttons()
    Dim intIndex As Integer
    Dim objCommandbarButton As CommandBarButton
    For intIndex = 1 To 2
        Set objCommandbarButton = CommandBars(intIndex). _
            FindControl(Tag:=COMMANDBARBUTTON_TAG)
        If Not objCommandbarButton Is Nothing Then objCommandbarButton.Delete
        Set lobjCommandbarButton(intIndex) = Nothing
    Next
End Sub

Public Sub Switch_ActiveCell_Color()
    Dim intIndex As Integer
    For intIndex = 1 To 2
        lobjCommandbarButton(intIndex).Caption = _
            IIf(lobjCommandbarButton(intIndex).Caption = "Ein", "Aus", "Ein")
    Next
    Call lobjApplication.Switch_On_Off
End Sub

' **********************************************************************
' Modul: clsApplication Typ: Klassenmodul
' **********************************************************************

Option Explicit

Private WithEvents mobjApplication As Excel.Application

Private mblnOn As Boolean

Private mobjCell As Range
Private mintColorIndex As Integer

Friend Property Set Set_Application(objApplication As Excel.Application)
    Set mobjApplication = objApplication
End Property

Private Sub Class_Terminate()
    If Not mobjCell Is Nothing Then
        mobjCell.Interior.ColorIndex = mintColorIndex
        Set mobjCell = Nothing
    End If
    Set mobjApplication = Nothing
End Sub

Private Sub mobjApplication_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If mblnOn Then
        If Not Target.Locked Or Not Sh.ProtectContents Then
            If Not mobjCell Is Nothing Then _
                mobjCell.Interior.ColorIndex = mintColorIndex
            mintColorIndex = Target.Interior.ColorIndex
            Target.Interior.ColorIndex = 6
            Set mobjCell = Target
        End If
    End If
End Sub

Friend Sub Switch_On_Off()
    mblnOn = Not mblnOn
    If Not mblnOn And Not mobjCell Is Nothing Then _
        mobjCell.Interior.ColorIndex = mintColorIndex
End Sub

Gruß
Nepumuk
Anzeige
Na, ob du Dustin damit nicht überforderst,...
09.11.2009 22:51:41
Luc:-?
...Nepumuk,
oder willst du ihn abschrecken... ;-)
Es ginge auch etwas einfacher, die Basis ist natürlich prinzipiell dieselbe, wenn man die Ereignisreaktion an-/abschalten (EventFlipFlop mit Kurzruftastenkombi) dürfte...
Gruß Luc :-?
Wieso
09.11.2009 23:16:17
Nepumuk
mein lieber Luc,
das ist doch ganz einfach.
Ich hab mal ein Addin angefangen, welches im Prinzip das selbe macht, aber dabei alle "normalen" Excelfunktionen aufrecht erhält (Kopieren, Einfügen, Wiederholen, Rückgängig machen .....). Das hat schon über 1.000 Zeilen und ist noch längst nicht fertig (wird es wahrscheinlich auch nie, weil ich keine Zeit und Lust dafür habe).
Gruß
Nepumuk
Anzeige
Das kenne ich... ;-) Gruß Luc :-?
10.11.2009 13:56:59
Luc:-?
:-?
@Luc
10.11.2009 00:43:55
Carlo
Hallo Luc,
ich habe schon einiges von dir gelesen. Kritik oder pauschale Verbesserungsvorschläge, die keinem weitergeholfen haben.
Mich würde interessieren, wie du es einfacher machst! Wirklich mal deinen Code!
Bin gespannt.
Grüße,
Carlo
EventFlipFlop hat ohne MsgBox nur 3 Zeilen...
10.11.2009 14:04:24
Luc:-?
...auf die du selber kommen kannst!
Und wenn du PgmCode von mir lesen willst, dann bemühe mal die Recherche...! Von dir liest man hier jedenfalls fast nichts und deine unmaßgebliche Meinung kannst du dann auch gern für dich behalten!
Luc :-?
AW: Makro Ein/Ausschalten
10.11.2009 07:45:33
Dustin
Hallo zusammen,
vielen Dank für Eure Hilfen.
Das Makro sieht toll aus :-), anfangen kann ich damit wenig :-(
Ich werde es dann wohl doch immer bei Bedarf in die Mappe, die ich benötige rein kopieren, ich glaub das geht schneller als mich in dieses Code rein zu arbeiten.
Trotzdem Vielen Dank an alle Helfer, ist echt ein tolles Forum.
Bis bald
Viele Grüße
Dustin
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige