Command Button vorübergehenden stilllegen

Liebe Excelfreunde,

Habe wieder mal ein Problem.

Der Bestätigungs-Button soll nur dann ausführbar sein, wenn In Spalte A in der jeweiligen Eingabezeile
ein Wert größer 1 steht.

Der Code soll sich auf den Spaltenbereich A5 : A1500 auswirken.
Die weitere Eingabe erfolgt in den Zeilen B5 : U1500

Hinweis: Vorangegangene Eingabezeile ist nach der Bestätigung nicht mehr sichtbar.
Es ist also immer nur eine Leere formatierte Zeile sichtbar.
So der PLAN

So sieht der Code im Moment für eine einzelne Zelle in Spalte A aus. Wahrscheinlich ist er auch noch nicht vollständig.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = „$A$5“ Then
If UCase(Target) < „1“ Then
CommandButton1.Enabled = False
Else
CommandButton1.Enabled = True
End If
End If
End Sub

Kann mir da jemand helfen.
Ich hoffe es gibt hierfür eine Lösung

Grüsse lernfix

Prüf mal deine Datentypen, ob Zahl oder String.

Hallo,

Du musst in der Zeile (Target.row) die verändert wurde den Wert in Spalte 1 prüfen.

Versuche es mal so:

Private Sub Worksheet_Change(ByVal Target As Range)

If ActiveSheet.Cells(Target.Row, 1).Value < 1 Then
    CommandButton1.Enabled = False
Else
    CommandButton1.Enabled = True
End If

End Sub

fg

Dirk_P

Hallo Dirk,

erstmall vielen, vielen Dank für Deine Freundliche Unterstützung.
Soweit ich den Code mal auf eine Testbutton gelegt habe, scheint das Makro so zu laufen. Bin nur noch nicht dazu gekommen den weiteren Code, der zur Zeit mit einer Formularschaltfläche läuft mit Deinem zusammenzufügen. Ich hoffe das klappt. Kann ich aber frühestens Montag ausprobieren.

Wenn das so laufen würde, wäre es super.

Wenn noch eine Zweite sache funktionieren würde wäre mein Tool komplett.

Der Eingabe-Code (Beisielzelle A5) wird in einer Hilfspalte (BO5:BO1500) per Datenüberprüfung gecheckt.

Jetzt würde ich gern auch den Eingabe-Code hinsichtlich doppelter Eingabe überprüfen lassen. (Also blocken bei wiederholter Eingabe)

Dazu meine Frage: Gehen zwei unterschiedliche Datenüberprüfungen, also Liste und benutzerdefiniert (Formel)

Wenn ja, was mus ich eingeben, bzw wie müsste das dann aussehen.

Wäre toll wenn Du dafür auch eine Lösung hättest, da ich hierfür noch nichts passendes gefunden habe.

Ich wünsche Dir ein schönes Wochenende.

Viele Grüsse
Lernfix

Hallo,

Zur Frage: gehen zwei unterschiedliche Datenprüfungen: Ja, diese werden dann per or verbunden. Damit kann man dann auch „abgestuft“ reagieren:
Erstmal Prüfung 1: Wenn die scheitert Meldung machen. Dann Prüfung zwei. Scheitert die, andere Meldung machen.

Habe nicht genau verstanden, was da in BO5:BO1500 (Spalte 76) steht. Aber mal unterstellt das gibt es einen Wahrheitswert, der dann Wahr ist, wenn der Code ok ist. Dann könnte das so aussehen:

If ActiveSheet.Cells(Target.Row, 1).Value < 1 or
ActiveSheet.Cells(Target.Row, 67).Value = True Then
CommandButton1.Enabled = False
if ActiveSheet.Cells(Target.Row, 1).Value < 1 then
msgbox(„Erster Fehler“)
else
msgbox(„Zweiter Fehler“)
end if
Else
CommandButton1.Enabled = True
End If
Code nicht getestet!

Also du brauchst eine Zelle, die das Ergebnis des „DoppelChecks“ beinhaltet. Die ist dann im Code zu prüfen.

Alternativ kann man auch per Code prüfen. Solltest du das brauchen, melde dich noch einmal.

fg

Dirk_P

Hallo Dirk,

Der erste Code hat bestens, so wie gedacht funktioniert.

BO5:BO1500 (Spalte 76) stimmt schon, Es ist der gleiche Bezug wie beim ersten Code nur da habe ich jeweils das O übersehen.

Ich formuliere meinen Anliegen nochmal:
Die Eingabezelle ab A5 ist immer vom User mit einem neuen Code zu füllen.

Der User kann, wenn die Bedingungen erfüllt sind (richtiger Code, und keine Doppeleingabe ab A5, denn auch hier sollte der Bestätigungsbutton blokiert bleiben) in den nachfolgenden Zellen (20) in der gleichen Zeile jeweils in drei Zellen seiner Wahl eine Zahl zwischen 1 und 3 eintragen (abstimmen).
Danch bestätigt er seine Auswahl und und es erschein eine neue Abstimmungszeile für den nächsten Wähler.

Damit aber der erste User seinen Code aber nicht zweimal eingibt, die Überprüfung mit der Doppeleingabe.

Da ich aber eine Datenüberprüfung (Liste BO5:BO1500 (Spalte 76)) bereits habe, klappt eine zweite Überprüfung (Formel) hinsichttlich der Doppeleingabe nicht.

Es ist zum Mäusemelken.

Nachrichtlich: Ab Zelle B3 stehen die Wahlnummern 1-20 die jeweils einem Bild zugeordnet sind.

Meinst Du es gibt da eine Chance.

VG
und einen schönen Abend wünscht
Lernfix

Hallo,

ja, da gibt es eine Chance. Gibt es übrigens fast immer ;-).

So langsam wird es für mich schwierig, alle Zellen und das was du machst zu verstehen. Daher erst mal ein paar wie man das umsetzen könnte. Dann musst du arbeiten und ggfs. weiter fragen.

Du spendierst der Tabelle eine weiter Spalte. (sollte ja noch Platz sein…) In diese wird erst beim drücken, des dann freigegebenen Buttons der Code eingetragen. Sagen wir mal das wird Spalte 100.

Der Anwender gibt seine Daten ein, incl. Code (Spalte 76)

Der alte Code könnte dan so aussehen:

Hallo,

war nicht komplett…

ja, da gibt es eine Chance. Gibt es übrigens fast immer ;-).

So langsam wird es für mich schwierig, alle Zellen und das was du machst zu verstehen. Daher erst mal ein paar Idden wie man das umsetzen könnte. Dann musst du arbeiten und ggfs. weiter fragen.

Du spendierst der Tabelle eine weitere Spalte. (sollte ja noch Platz sein…) In diese wird erst beim Drücken, des dann freigegebenen Buttons, der Code eingetragen. Sagen wir mal das wird Spalte 100 (CV).

Der Anwender gibt seine Daten ein, incl. Code (Spalte 76)

Der alte Code könnte dann so aussehen:
If ActiveSheet.Cells(Target.Row, 1).Value < 1 Then
CommandButton1.Enabled = False
Else
if activesheet.Range(„CV:CV“).Find(cells(target.row,76).value, lookat:=xlWhole) is nothing then
CommandButton1.Enabled = True
end if
End If

Das Find Statement sucht in der Spalte mit den „fertigen“ Codes. Für die aktuelle Zeile ist diese Spalte noch leer. Daher würde find nichts finden (is nothing).

Beim Drücken des Buttons wird dann die Spalte CV gefüllt und die Zeile ausgeblendet.

Wie gehabt: Nicht getestet!

fg

Dirk_P

Hallo Dirk,

Danke für die schnelle Antwort, aber ich glaube so geht es nicht.

Die Eintragungen für Zugangs-Code finden ausschließlich in Spalte A ab( A5) statt. Nicht in CV

In der Spalte BO (ab BO5 bis BO1500) sind die Zugangs-Code zum Abgleich hinterlegt. Der Bereich ist für den User nicht einsehbar.

Kannst Du mit den Angaben was anfangen.

VG
Lernfix

Hallo,

der Glaube versetzt zwar Berge, aber…

Du musst den Prozess bedenken:
Neue Zeile (Ist dann BO _xx leer?)
Eingabe durch den User, auch des Codes.
Suchen ob der Code schon verwendet wurde (ggfs. ist das BO…)
Danach den Button aktiv schalten.
Wird der Button gedrückt den Code als „verbraucht“ merken (In Spalte BO kopieren?).

Oder habe ich einen Denkfehler: Soll der User einen ihm bekannten Code eingeben, damit er in der Zeile ändern kann? Also Eingabe muss = BO sein?

fg

Dirk_P

Hallo dirk,
noch schnell zu vorgerückter Stunde.

Genau der User benutzt einen Code der bereits in derSpalte BO (Bo5 bis Bo1500) hinterlegt ist .

Den Code aus Spalte BO erhält er er per Mail und trägt Ihn in in die freie Zeille in Spalte A ein macht in den weiteren Zellen „drei Kreuze“ und bestätigt dies per Button usw.
Die Zeile wird ausgeblendet und eine neue leere Zeile wird für den nächsten User sichtbar.

Deshalb auch die verschiedenen Prüfungen damit der Code nur einmal verwendet werden kann.

Besser kann ich es nicht erklären.

VG
Lernfix

Hallo,

dann bitte etwas ändern:

wird

if not activesheet.Range(„CV:CV“).Find(cells(target.row,76).value, lookat:=xlWhole) is nothing

will sagen, der Code darf in der Spalte (welche das immer sein mag) eben nicht vorhanden sein. Ansonsten muss beim Drücken des Buttons der validierte Code noch in die Spalte mit den Codes geschrieben werden. Empfehlenswert ist dann auch sofort die Dtaei zu speichern (per vba)

Sofern du so nicht weiter kommst: Poste mal eine Musterzeile…

fg

Dirk_P

Hallo Dirk,
Problem gelöst!!!

Vielen Dank für Deine sehr hilfreiche mitwirkung:.

VG
Lernfix