online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Phlip vom 27.03.2022, 19:25 Options

bedingte Schaltfläche

Hallo SN User,

ich habe auf einem Tabellenblatt eine Schaltfläche eingefügt, die mit einem Makro belegt ist. Das Makro darf aber nur ausgeführt werden, wenn die beiden folgenden Bedingungen erfüllt sind:

1) Es muss mindestens eine Zeile unterhalb der Überschrift der Tabelle befüllt sein.
2) Jede befüllte Zeile muss vollständig befüllt sein. Es darf kein Feld leer bleiben. Was eingetragen wird ist egal bzw. durch Validierung bereits vorgegeben.

Ist es möglich, die Schaltfläche nur aktiv zu schalten, wenn diese Bedingungen erfüllt sind?
Alternative: Ist es möglich, die Schaltfläche auszublenden, solange die Bedingungen nicht erfüllt sind?

Danke im Voraus für Eure Hilfe.

Viele Grüße
Phlip


Antwort schreiben

Antwort 1 von nighty vom 27.03.2022, 20:26 Options

hi Phlip ^^

ein beispiel

gruss nighty

einzufuegen
alt+f11/projektexplorer/DeineTabelle

die 3 gibt an 2 positionen das indexende der spalten an
waere entsprechend an beiden positionen anzupassen

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Dim Schalter As Boolean
    Dim Zelle As Variant
    ReDim Bereich(1, 3) As Variant
    If Target.Row > 1 Then
        Bereich() = Range(Cells(Target.Row, 1), Cells(Target.Row, 3))
        For Each Zelle In Bereich()
            If Zelle = "" Then Schalter = True
        Next Zelle
        If Schalter = True Then
            CommandButton1.Enabled = False
        Else
            CommandButton1.Enabled = True
        End If
    End If
    Application.EnableEvents = True
End Sub  

Antwort 2 von nighty vom 28.03.2022, 07:18 Options

hi Phlip ^^

mit dem cb button koennte es dann so aussehen

gruss nighty

Private Sub CommandButton1_Click()
CommandButton1.Enabled = False
Call DeinMakroname
End Sub  
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Dim Schalter As Boolean
    Dim Zelle As Variant
    ReDim Bereich(1, 3) As Variant
    If Target.Row > 1 Then
        Bereich() = Range(Cells(Target.Row, 1), Cells(Target.Row, 3))
        For Each Zelle In Bereich()
            If Zelle = "" Then
                Schalter = True
                Exit For
            End If
        Next Zelle
        If Schalter = True Then
            CommandButton1.Enabled = False
        Else
            CommandButton1.Enabled = True
        End If
    End If
    Application.EnableEvents = True
End Sub  

Antwort 3 von Beverly vom 28.03.2022, 12:05 Options

Hi Philip,

du kannst doch dein Makro für den Schalter mit Hilfe einer If-Verzweigung so schreiben, dass bei erfüllter Bedingung (alle Zellen ausgefüllt) das andere Makro gestartet wird, wenn nicht, dann eine MsgBox mit einem Hinweis dass nicht alle Zellen ausgefüllt sind.

Bis später,
Karin

Antwort 4 von Phlip vom 28.03.2022, 19:11 Options

Hallo nighty und Karin,

vielen Dank für Eure Hinweise. Leider gehen meine VB-Kenntnisse gegen null und ich habe folgende Probleme beim Verständnis bzw. bei der Umsetzung:

@ nighty: Ich habe den Code aus Deinem zweiten Posting bei vor dem Code des Makros eingefügt. Da es sich bei mir um 5 Spalten handelt, habe ich die 3en aus Deinem Code durch 5en ersetzt. Aber ich erkenne keinen Effekt.

@Karin: Den If-Teil könnte ich analog zu den If-Teilen in nightys Code wahrscheinlich noch nachbauen, aber ich glaube, das mit den Bedingungen bekomme ich nicht hin.

Evtl. hilft Euch die folgende Info noch zum besseren Verständnis, wo mein Problem ist. Das Tabellenblatt ist wie folgt aufgebaut

A1 - Tabellenüberschrift
Zeilen 2 und 3 leer
Zeile A4:E4 - Überschriften der Spalten
ab Zeile 5, die Einträge

Es ist egal, ob eine oder hundert Zeilen befüllt sind. Wichtig ist nur, dass wenn eine Zeile befüllt ist, sie auch komplett befüllt ist.

Tabellenüberschrift


Spalte A | Spalte B | Spalte C | Spalte D | Spalte E
Eintrag1| Eintrag2 | Eintrag 3 | Eintrag4 | Eintrag5
...


Es darf keiner der Einträge 1-5 fehlen, sonst darf das Makro nicht ausgeführt werden.

Allerdings: Wenn es jetzt größeren Aufwand machen würde, ist es den Aufwand nicht wert. Wenn Ihr also noch eine schnelle Idee habt, wie man das Problem lösen kann, die Euch keine Mühe bereitet, dann freue ich mich auf Eure Vorschläge. Wenn Ihr aber jetzt langwierig etwas erklären oder Code schreiben müsstest, dann lasst es bitte. Denn ich selbst habe auch nicht die Zeit, es entsprechend zu würdigen und möchte Euch daher nicht unnötig damit beschäftigen.

Gruß, Phlip

Antwort 5 von nighty vom 29.03.2022, 08:41 Options

hi Phlip ^^

du wirst es wohl falsch abgelegt haben

ich hab mal eine vielleicht bessere beschreibung bzw vorgehensweise aus dem netz kopiert und hier eingefügt

gruss nighty

p.s.
bei so wenigen zellen ist ein array natuerlich wie mit kanonen auf spatzen zu schiessen,aber schnell *grrrr* ,hier haette vielleicht eine rangebereichsangabe statt eines arrays ausgereicht

^^

während Excel aktiv ist, ist die Tastenkombination Alt + F11 zu drücken, damit öffnet sich das Fenster der Entwicklungsumgebung für VBA

mit Tastenkombination Strg + R den Projektexplorer öffnen und aktivieren

dort die gewünschte Datei per Doppelklick markieren, sie ist dann blau unterlegt

nun Doppelklick unterhalb dieser Datei auf das gewünschte Tabellenblatt, auf welches sich das Makro auswirken soll

nun ist in der rechten Fensterhälfte das Codefenster dieser Tabelle sichtbar. In diese kann der Code eingefügt werden

speichern und Visual Basic mit Tastenkombination Alt + F4 schließen

das Makro steht nun in der Datei zur Verfügung und wird durch Wechsel des Zelleninhaltes ausgelöst

Antwort 6 von Beverly vom 29.03.2022, 09:04 Options

Hi Philip,
If ActiveCell.Row > 4 Then
    If Application.CountA(Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 5))) = 5 Then
        MsgBox "Dein Makro"
    Else
        MsgBox "Bitte alle Zellen ausfüllen"
    End If
End If

Bis später,
Karin

Ähnliche Themen

Makro / Schaltfläche / Verknüpfung
Tomschi  07.04.2009 - 204 Hits - 4 Antworten

Spalten Ein-/Ausblenden über eine Schaltfläche
Jessi-baby  08.07.2009 - 255 Hits - 4 Antworten

einen Wert über eine Schaltfläche erhöhen
woher53  06.08.2009 - 162 Hits - 2 Antworten

VBA Userform Schaltfläche
andreas_3  20.11.2009 - 506 Hits - 15 Antworten

Schaltfläche
Dirkilein  27.03.2010 - 184 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 16:59:01 2026