Seite 1 von 1

Ein / Aus Schaltfläche

Verfasst: Di, 07.03.2017 07:00
von tsw68
Hallo

Ich möchte gerne eine Schaltfläche mit zwei Makros .
Ein mal geklickt Makro1 noch einmal geklickt makro2
Beim ersten mal Klicken der Schaltfläche sollte der Title der Schaltfläche = Ein sein und Aus beim zweiten Klick.

Ich hoffe auf eure hilfe
Bedanke mich jetzt schon 1000 mal Danke !

MFG tsw68

Re: Ein / Aus Schaltfläche

Verfasst: Di, 07.03.2017 08:23
von TrueColor
Nützt dir das etwas (siehe Anhang)?

Im Prinzip ist das eine Mehrfach_Fallunterscheidung (select case) anhand der Eigenschaften des Buttons (.tag, das ist das, was in Eigenschaften: Kontrollfeld > Allgemein > Zusatzinformation drinsteht).

Pro Fall werden die Eigenschaften des Buttons (Beschriftung und Tag) geändert und entsprechende Macros ausgeführt.

Re: Ein / Aus Schaltfläche

Verfasst: Di, 07.03.2017 10:29
von tsw68
hi !

Du hast den Nagel auf den Kopf getroffen.
Das ist was ich wollte, versuch aber schon die ganze zeit nur zwei Makros zum laufen zu bekommen.
Krige es aber nicht hin.
Meine Makross (Weiss u. Blau)

Re: Ein / Aus Schaltfläche

Verfasst: Di, 07.03.2017 11:41
von F3K Total
Hi,
wenn du nur Ein/Aus und blau/weiß brauchst, reicht dieses einfachere Makro:

Code: Alles auswählen

Sub S_switch_button (oEv)
    oCell = ThisComponent.Sheets.getbyName("Tabelle1").getCellrangebyName("A1")
    oButton = oEv.source.model
    if oButton.Label = "Ein" then
        oButton.Label = "Aus"
        oButton.BackgroundColor = 255
        oButton.TextColor = 16777215
        oCell.Cellbackcolor = -1
        oCell.String = "Ein"
    else
       oButton.Label = "Ein"
       oButton.BackgroundColor = 16777215
       oButton.TextColor = empty
       oCell.Cellbackcolor = 255
       oCell.String = "Aus"
    endif
End Sub
Schreibe Ein oder Aus auf die Schaltfläche und binde das Makro an das Ereignis "Aktion ausführen".
Gruß R

Re: Ein / Aus Schaltfläche

Verfasst: Di, 07.03.2017 12:22
von tsw68
Super so möchte ich es haben.

möchte das aber gerne auf verschiedenen Tabellen nutzen ohne das ich den Tabellenname immer ändern muss.

Bei ( Ein ) soll ein Makro gestartet werden und bei ( Aus ) auch.

Re: Ein / Aus Schaltfläche

Verfasst: Di, 07.03.2017 12:31
von Karolus
Hallo

Code: Alles auswählen

oCell = ThisComponent.CurrentController.ActiveSheet.getCellrangebyName("A1")

Re: Ein / Aus Schaltfläche

Verfasst: Di, 07.03.2017 12:41
von tsw68
Bei ( Ein ) soll ein Makro gestartet werden und bei ( Aus ) auch.

und wo kann ich meine zwei Makros eintragen ?

Re: Ein / Aus Schaltfläche

Verfasst: Di, 07.03.2017 12:57
von Karolus
Da wo du möchtest das sie ausgeführt werden schreibst du <deinMakroName> hin.

WTF: das sollte selbst einem blutigen Anfänger aus den hier im Thread gegebenen Beispielen sonnenklar sein.

Re: Ein / Aus Schaltfläche

Verfasst: Di, 07.03.2017 13:20
von tsw68
Hi

Jetzt ist alles Klar, und ich habe alles so hinbekommen wie ich es wollte.

Alles Super gut !!!!!

Vielen Dank für die hilfe

Thema gelöst !!

Re: Ein / Aus Schaltfläche

Verfasst: Di, 07.03.2017 13:26
von TrueColor
tsw68 hat geschrieben: Di, 07.03.2017 12:41 Bei ( Ein ) soll ein Makro gestartet werden und bei ( Aus ) auch.

und wo kann ich meine zwei Makros eintragen ?
Deshalb hatte ich dir genau diese Datei angehängt, weil man da gut sieht, wo welche Macros aufgerufen werden (--> Call MacroName).
Und das ganze von 4 (rot, gelb, grün, off) auf 2 (ein, aus) Fälle/Schaltpositionen zu kürzen, sollte kein Akt sein. An welcher Stelle hast du ein Problem?

In F3K's Code muss du deine Calls im IF- und ELSE-Bereich eintragen (Du musst auch nicht zwingend deinen Knopf bunt machen ;-))
F3K Total hat geschrieben: Di, 07.03.2017 11:41 [Ergänzungen von TrueColor]

Code: Alles auswählen

Sub S_switch_button (oEv)
    oCell = ThisComponent.Sheets.getbyName("Tabelle1").getCellrangebyName("A1")
    oButton = oEv.source.model
    if oButton.Label = "Ein" then
        oButton.Label = "Aus"
        oButton.BackgroundColor = 255
        oButton.TextColor = 16777215
        oCell.Cellbackcolor = -1
        oCell.String = "Ein"
        Call DeinMacro1 '<-- Der Aufruf deines ersten Macros (Ergänzung TrueColor)
    else
       oButton.Label = "Ein"
       oButton.BackgroundColor = 16777215
       oButton.TextColor = empty
       oCell.Cellbackcolor = 255
       oCell.String = "Aus"
       Call DeinMacro2 '<-- Der Aufruf deines zweiten Macros (Ergänzung TrueColor)
    endif
End Sub

Sub DeinMacro1 '<-- Dein erstes Macro (Ergänzung TrueColor)
	[Dein Macro-Code]
End Sub


Sub DeinMacro2 '<-- Dein zweites Macro (Ergänzung TrueColor)
	[Dein Macro-Code]
End Sub

Re: Ein / Aus Schaltfläche

Verfasst: Mi, 08.03.2017 09:43
von Jörg
hallo Fachleute,
vielen Dank für Eure Anregungen. So erspart man sich eine Reihe von Schaltfläche. (bei mir jedenfalls :lol: )

Code: Alles auswählen

Sub Wechsel_Preislisten (oEv)
    oCell = ThisComponent.Sheets.getbyName("Eingabemaske Abr_Rechnung").getCellrangebyName("I13")
    oButton = cmd
   cmd= oEv.source.model
    if cmd.Label = "Neue Preisliste aktivieren" then
        cmd.Label = "Alte Preisliste aktivieren"
       ' oButton.BackgroundColor = 255
        'oButton.TextColor = 16777215
        'oCell.Cellbackcolor = -1
        oCell.String = "Achtung! Neue Preisliste aktiv"
        neue_Preisliste ' Makro 
    else
       cmd.Label = "Neue Preisliste aktivieren"
       'oButton.BackgroundColor = 16777215
       'cmd.TextColor = empty
       'oCell.Cellbackcolor = 255
       oCell.String = "Achtung! Alte Preisliste aktiv"
       alte_preisliste ' Makro
    endif
End Sub

Re: Ein / Aus Schaltfläche

Verfasst: Mi, 08.03.2017 10:06
von TrueColor
Jörg hat geschrieben: Mi, 08.03.2017 09:43 So erspart man sich eine Reihe von Schaltfläche. (bei mir jedenfalls :lol: )
.. wenn du deine Macros in einer bestimmten Reihenfolge durchgehen willst/musst, oder wenn's egal ist, ob du ein Macro "umsonst" ausführst, weil's kaum Performance kostet. Andernfalls kannst du auch ein Listenfeld/Kombinationsfeld (die Pulldowns) verwenden. Vom Code ist das im Prinzip das gleiche:

Code: Alles auswählen

Sub AuswahlSortieren (oEvent)
    Dim oSheet As Object
    Dim oBereich As Object
    Dim sName As String
    
    oSheet = ThisComponent.CurrentController.ActiveSheet
    oBereich = oSheet.getCellRangeByPosition(0,0,GetLastUsedCol(oSheet),GetLastUsedRow(oSheet))

    'sName = oEvent.Source.SelectedText 'Verwendung bei KomboBox
    sName = oEvent.Source.SelectedItem 'Verwendung bei Listenfeld
    
    Select Case sName
      Case "Sortierung: Termin Kunde"
        SortBy_TKunde (oBereich)
      Case "Sortierung: Termin Prod."
        SortBy_TProd (oBereich)
      Case "Sortierung: Fertigstellung"
        SortBy_Fertig (oBereich)
      Case "Sortierung: Status"
        SortBy_Status (oBereich)
      Case "Sortierung: Bauvorhaben"
        SortBy_BV (oBereich)
    End Select
End Sub

Re: Ein / Aus Schaltfläche

Verfasst: Sa, 11.03.2017 08:04
von tsw68
Hallo !

habe es geschaft.
Super gut

vielen Dank !

MFG tsw68